0x01前言
因为项目需要对一些系统做测试,找到一个oa系统,正好以前搞过类似的oa,就记录一下本次测试的有趣点。
0x02过程
因为以前搞过,所以直接拿sql注入的payload来用,可以看到能查出当前数据库用户是dbo
当前数据库为mssql,所以就看看能不能试试xp_cmdshell,先查询一下xp_cmdshell是否开启(mssql2005版本以后,默认是关闭的,如果要开启需要手动开启)。
exec sp_configure
可以看到xp_cmdshell的值为0/1/0/0
所以是没有开启的状态
那么开启xp_cmdshell就可以执行命令了(前提是一定要能支持堆叠)
exec sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure'xp_cmdshell', 1;
RECONFIGURE;
执行了上面的命令之后再查看xp_cmdshell的状态就变成了0/1/1/1
执行命令
exec master..xp_cmdshell 'whoami';
0x03奇怪的现象
当我用另外一个sql注入payload的时候发现一个以前没见过的情况,我用上一个payload知道了当前用户为dbo,这个payload应该也能测试出来的,但是返回包没有任何内容,于是我尝试用时间盲注,发现数据包重置的时间跟我设置的休眠时间一样,当我把if语句改为false时,数据包立马就重置了,当我把if语句改为true时,数据包5秒后才重置(因为我以前没见过这种情况就很惊讶)通过数据包重置的时间盲注。
更惊讶的是,我把数据包发送给其他人,他们都复现不了,只有我能复现。(太神奇了!!!)