开始找网站,thinkphp 的网站一找一大堆,可怕...
更可怕的是并不是你找到的就能任意命令执行,需要一个网站一个网站的测试 ...
然后我就一个一个的试 , 好可怜啊, 试了十几个才有一个可以利用的...
原理:
有问题的代码:
$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));
7$res = preg_replace('@(w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2';', implode($depr,$paths));
将preg_replace第二个参数中的双引号改为单引号,防止其中的php变量语法被解析执行。其实只有一个引号的差别,现在你知道基础多重要了吧。
利用过程:
找网站吧,慢慢找总能找到一个,这是搜索语法,为了结果更精准一点,不用测试更多无用的
首先打开网站的主页,因为搜索到的都是报错的页面,不能直接利用,
自己找找什么网页包含参数,然后进行payload 注入,测试是否能够利用这个漏洞
就像下边的这个一样,就是可以执行代码的网站
然后更改payload , ${ eval($_POST[a])}
使用菜刀连接
尝试写入shell,这样对方thinkphp升级也能访问,于是写入shell呗 , 这时候忽然在根目录下边发现一个404.php ,感觉好奇怪啊 ,打开看一下 ,卧槽 ,别人上传的大马 ,还是那种很贱很贱的那种 ,于是我把密码改了 ,然后他就不能用了 23333
看着现在时间还多着 ,于是尝试修补漏洞 ,让其他人不能登陆 ,根据上边的漏洞代码 ,找到目标文件夹 ,实际测试中发现 ,路径完全不一样 ,有差别 ,但是最后的文件名是一样的 ,修改保存
现在这个网站就只属于你的了 , 哈哈 !!!
*********************************************************我是一个分割线**************************************************************
你是不是认为这就完成一次成功的例子 , 其实我当时也是这么认为 的,直到身边的人不小心访问了下这个网站的主页面 ,擦 ,白屏!!!
还有一行 报错信息 ,就是刚才改动的文件的名字里边报错了 ,提示内容是 无效的分号 !!!
旁边的人问我 ,你修改文件备份了没有?! 我说没有.... 这时候才终于知道修改前先备份一个文件是多么重要了 ....
擦 ,赶紧把原来的文件改过来 ,然后打开原来的文件 ,手都是软的 ....
然后修改单引号为双引号 ,再次访问目标主页面 ,访问正常
郑重提示 ,新手不要乱改别人的页面 ,还有函数!!!
文章仅供学习,不要做坏事