墨者学院-SQL手工注入漏洞测试(MySQL数据库)

这道题目相对简单,有点类似于Bugku-web中成绩查询的注入方法,主要为了锻炼自身SQL注入能力和SQL语句的熟练应用,多见见题目!!这道题目将从手动和sqlmap工具两个方面进行解答。
附上题目链接:https://www.mozhe.cn/bug/detail/82
第一种方法:手动(这道题目比较简单的地方就在于没什么过滤):
打开题目,发现一个由账号和密码组成的表单,尝试多次,发现账号和密码不能为空且账号和密码不能出错,各种摆弄无疾而终,痛定思痛,决定让自己沉寂下来,仔细想想SQL注入的地方是不是不对……就在打开源码的一瞬间,好像看到了希望,在源码中发现了另一个url,而这个url的payload深深吸引了我……
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第1张图片
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第2张图片
激动之余,首先检测该页面是否存在注入点。分别用id=1’、id=1 and 1=1以及id=1 and 1=2进行测试。
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第3张图片
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第4张图片
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第5张图片
可以看出,只有在id=1 and 1=1这个正确命令注入时,页面显示正常,其余两种错误都会让页面出现异常,说明可以进行注入。
第二步,检验被查询表存在的字段数量(运用order by命令)。依次用order by+数字(2、3、4……),当执行命令order by 4时页面显示正常,而执行order by 5时页面出现异常,可以判定被查询表中存在4个字段。
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第6张图片
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第7张图片
第三步,检测页面回显位置。(union联合查询)
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第8张图片

通过union联合查询可以看出,select语句后第二个位置会回显到标题处,第三个位置会回显到正文处。
第四步,确定好回显位置后,依次进行数据库,表,列以及列值的爆破。
(1)数据库(database())-group_concat()函数可以让回显内容用逗号隔开
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第9张图片
(2)表爆破
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第10张图片

(3)列爆破(根据常识猜测,用户名和密码应该位于StormGroup_member表中)
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第11张图片

(4)对name和password列值进行爆破
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第12张图片
可以看出,此时密码为md5加密形式,对密码进行解密,可以分别得到dsan13和812693两个结果。
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第13张图片
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第14张图片
以用户名为mozhe,密码为dsan13,和用户名为mozhe,密码为812693分别登陆,结果显示密码为812693登陆成功,发现key。(猜测dsan13可能已过使用有效期)
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第15张图片
第二种方法:利用sqlmap自动注入
(1)直接开门见山,对url进行数据库的爆破,同样发现mozhe_Discuz_StormGroup数据库。
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第16张图片
(2)对mozhe_Discuz_StormGroup数据库中的表进行爆破,同样发现了StormGroup_member表。
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第17张图片
(3)对StormGroup_member表中的列进行爆破,发现了name和password
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第18张图片
(4)对name和password列的列值进行爆破
墨者学院-SQL手工注入漏洞测试(MySQL数据库)_第19张图片
最后仍需要对password数值进行md5解密,并利用name和解密后的password进行登陆,登陆成功后即可获得要求的key值。

你可能感兴趣的:(CTF,mysql,数据库,sql)