【墨者学院】:SQL过滤字符后手工注入漏洞测试(第3题)


0x00.题目描述:

背景介绍

安全工程师"墨者"最近在练习搭建一个采购系统,为了安全起见,“墨者”对该系统做了部分防护措施,请你帮助他测试系统是否安全。

实训目标

1、掌握SQL注入原理;

2、了解手工注入的方法;

3、了解MySQL的数据结构;

4、了解SQL注入常用注释字符;

5、了解sql注入常用绕过姿势;

解题方向

手工进行SQL注入测试,获取管理密码登录。

0x01.解题思路:

靶场环境:

主界面

维护界面

经过测试,确定注入点在维护界面的URL链接的id参数中,判断字段,然后联合注入即可.


字段数为7

手工注入:

联合注入,来进行爆库:

首先是爆数据库名:

payload:/new_list.php?id=-1' union select 1,2,3,database(),5,6,7%23



接下来就是爆表名,列名以及字段了。


爆数据库表名


爆列名


爆字段名

选择status为1的MD5密码解密下,即可得到flag~

sqlmap注入:

貌似sqlmap爆不出表名,因为表名中含有特殊字符。

0x02.总结:

1.最后一步的爆字段,payload为:/new_list.php?id=-1' union select 1,2,3,(select group_concat(status,username,password) from `(@dmin9_td4b}`),5,6,7%23。

可以看到表名中用了两个反单引号,这是因为有时候数据库的表信息或者字段信息显示出来是key或者是其他的,但是语句没有写错,信息就是显示不出来,那么就在字段或者表的旁边加上反引号,因为MySQL中对有些字符或者保留字做了限制,当命名的时候有些字段存在这些关键字,那么查询的时候就要加上反引号。

2.本来以为将表名转换为十六进制也许可行,但是手工注入还是不行。

你可能感兴趣的:(【墨者学院】:SQL过滤字符后手工注入漏洞测试(第3题))