[GYCTF2020]Blacklist
进入题目就给了一个提交框,输入1提交一下
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNCM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPn1UejRUT61kaOBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwczM0MDNyMTMxMDMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
感觉应该是sql注入,进行尝试
存在注入点,继续操作
顺利查出字段数为2,但是继续的时候就遇到了问题
发现过滤了select,绕了好久都没有绕过去,就换了个思路,使用堆叠注入。
顺利查出表名,接着查字段
ok,接着就是查字段内容了,因为这题和强网杯2019的随便注很像,我刚开始就直接用的set赋值变量变量来解。我的payload是这样的
因为过滤了select,我就用concat来拼接语句,但是执行结果
…然后我仔细看了一下,过滤了set和prepare。好吧,我是瞎子。
之后我就去看了一下其他大佬的wp,又学到了一种新姿势——handler绕过select过滤
handler语法
handler table_name open ... //获取句柄
handler ... read first //读取第一行数据
handler ... read next //读取下一行数据
现在我们在本地测试一下
我本地有一个名为hack的表
现在回到题目,我们已经知道了表名,就可以直接用handler来读取
这样就拿到flag了