news 2026/4/22 15:51:34

BUUCTF-easy_web

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BUUCTF-easy_web

将初始url中img参数的内容进行两次base64解码以及一次16进制解码后,可以得到555.png。


可以将参数改为index.php进行一次16进制编码、两次base64编码后传参,获取到index.php的源码。

<?phperror_reporting(E_ALL||~E_NOTICE);header('content-type:text/html;charset=utf-8');$cmd=$_GET['cmd'];if(!isset($_GET['img'])||!isset($_GET['cmd']))header('Refresh:0;url=./index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=');$file=hex2bin(base64_decode(base64_decode($_GET['img'])));$file=preg_replace("/[^a-zA-Z0-9.]+/","",$file);if(preg_match("/flag/i",$file)){echo'<img src ="./ctf3.jpeg">';die("xixi~ no flag");}else{$txt=base64_encode(file_get_contents($file));echo"<img src='data:image/gif;base64,".$txt."'></img>";echo"<br>";}echo$cmd;echo"<br>";if(preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i",$cmd)){echo("forbid ~");echo"<br>";}else{if((string)$_POST['a']!==(string)$_POST['b']&&md5($_POST['a'])===md5($_POST['b'])){echo`$cmd`;}else{echo("md5 is funny ~");}}?>

前面较为容易绕过,较为难绕过的是下述代码:

echo$cmd;echo"<br>";if(preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i",$cmd)){echo("forbid ~");echo"<br>";}else{if((string)$_POST['a']!==(string)$_POST['b']&&md5($_POST['a'])===md5($_POST['b'])){echo`$cmd`;}else{echo("md5 is funny ~");}}

可以看到$cmd参数设置了较为严格的过滤,常见的查看文件内容的命令都被过滤,

more less head tail cat

但是还有其他方法可以查看文件内容:

base64 /flag strings /flag

接下来还需要以post方式传参ab两个参数,且ab不能相等但是他们的md5值严格相等。

if((string)$_POST['a']!==(string)$_POST['b']&&md5($_POST['a'])===md5($_POST['b'])){echo`$cmd`;}

可用下面两个字符串,虽然他们的值不同但是他们的md5值相同

TEXTCOLLBYfGiJUETHQ4hAcKSMd5zYpgqf1YRDhkmxHkhPWptrkoyz28wnI9V0aHeAuaKnak TEXTCOLLBYfGiJUETHQ4hEcKSMd5zYpgqf1YRDhkmxHkhPWptrkoyz28wnI9V0aHeAuaKnak


最终payload如下:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:26:32

C++ Template(模板)解读和模板报错如何“逆向阅读”定位

一、Template&#xff08;模板&#xff09;解读 一、模板本质&#xff1a;不是泛型&#xff0c;是“代码生成器”Template 编译期函数 / 类型生成系统template<typename T> T add(T a, T b) { return a b; }编译期行为&#xff1a; add<int> -> 生成一个 i…

作者头像 李华
网站建设 2026/4/23 12:47:20

不止ChatGPT!多智能体协同框架AutoGen、CAMEL全解析,小白也能上手

在数字化浪潮席卷全球的今天&#xff0c;人工智能领域正不断突破边界。当单个智能体的能力逐渐触达瓶颈&#xff0c;多智能体协同恰似一把 “智能密钥”&#xff0c;解开了更复杂任务的解决密码。尤其是大语言模型加持下的多智能体协同架构&#xff0c;已悄然在各行业掀起变革&…

作者头像 李华
网站建设 2026/4/23 0:56:54

企业知识库成“数字垃圾场“?RAGFlow三招教你打造AI智能大脑,小白程序员也能上手! 企业知识库常沦为“数字垃圾场“,根源在于三个误区:一是“为了做而做“,只强调

知识管理 # RAG # 效率革命 RAGFlow 实践 1.知识库沦为“数字垃圾场”的根源在于“为了做而做”&#xff0c;增加了员工负担。 2.成功的知识库是需要“养”的生物&#xff0c;必须持续调试、优化&#xff0c;而非静态的“U盘”。 3.终局是嵌入工作流&#xff08;Workflow&#…

作者头像 李华
网站建设 2026/4/23 10:44:02

2025大厂Java面试高频真题整理!

2025快要结束&#xff0c;想必有不少小伙伴已经开始提前为明年面试做准备了。今天写下这篇文章的原因是这几天有很多粉丝在后台找我&#xff0c;希望我出一份对标明年金三银四的面试题总结&#xff0c;近期急需面试。不过我一个人短时间内肯定是不能把近期的高频面试题全部总结…

作者头像 李华