CTF

安恒培训摸底题

Posted on 2020-07-07,3 min read

SQL注入:

UA头报错注入。一把梭。这里不能用--+。服务端会用trim去掉空格。导致最后传入的还是--。
用-- a就行。

啥shop:
Thinkphp RCE一把梭

ICMS:

爆破弱口令
admin/admin123
跟着文章复现https://xz.aliyun.com/t/4030
其中PHP输入流。可以用BP导入

坑点:

das.wetolink.com:48885/admincp.php?app=files&do=IO&frame=iPHP&ext=zip&udir=&name=iCMS.APP.1-v1.1.1&watermark=false
udir。指的是附件目录的相对路径。
如果你附件设置那里目录设置了/
这里就直接空就行
默认是/view/
所以文中加../
然后name传一个符合格式的文件名。路径和dir对应。dir../。文件名也要../

然后就是安装引用。访问/app/shell.php

万能密码+SSTI

界面是这样的。

有Hint。login as admin
直接万能密码登陆

admin\
||1#

然后就是更新账号处。SSTI

输入的值。都会返回
PHP的模板注入。貌似就TWIG和Smart
这里是smart的SSTI

很多函数过滤了。直接用无参数那个。show_souce读flag

Gate One SSH

OPPO OGeek CTF 2019原题。
跟着赵总的WP复现下
首先就github下源码。在gateone/applications/terminal/plugins/ssh/ssh.py

这个get_host_fingerprint。传入一个settings。取其中的port值。带入字符串拼接然后执行

当访问WebSocket.terminal:ssh_get_host_fingerprint时。就会调用这个函数
全局搜到ssh.js


这里执行了

go.ws.send(JSON.stringify({'terminal:ssh_get_host_fingerprint': message}));
#JSON.stringify-------将json转换为字符串。
#message又对应
{'host': host, 'port': port}
所以。这里的json应该是
'{"terminal:ssh_get_host_fingerprint": {"host":"xxx","port":"1231;ls;"}}'
发送的是
go.ws.send('{"terminal:ssh_get_host_fingerprint": {"host":"xxx","port":"1231;ls;"}}')

继续看这个go是啥

最终exp:

GateOne.ws.send('{"terminal:ssh_get_host_fingerprint": {"host":"xxx","port":"1231;ls;"}}')

查看flag即可

下一篇: SCTF UnsafeDefenseSystem(信息搜集+thinkphp反序列化+条件竞争)→