[网鼎杯2018]Unfinish(’+’在sql注入的应用)
我们在register页面先随便注册一个账号登录
在页面中我们能看到我们的用户名
我们猜测在用户名处存在二次注入
为了验证我们的猜想,我们再次注册一个账号
发现用户名变为0了,说明存在二次注入
我们对用户名进行fuzz,发现逗号,information等许多关键字被过滤了
绕过方法:
mysql中,+只能当做运算符
当我们执行select ‘1’ + ‘1a’时 结果
执行select ‘0’+database();
变成了0,我们用ascii码进行计算
select ‘0’+ascii(substr(database(),1,1));
出来了库的第一位的ascii值
我们回到题目,由于逗号被过滤了,我们用from for 来代替
0’+ascii(substr(database() from 1 for 1))+’0;
成功回显,因为过滤了information,我们猜测字段名为flag
最后,我们借鉴个脚本
1 | import requests |
虽然有点离谱,但flag好歹出来了