上次的绕过太简单,也没有能注出数据或者获取权限,这次继续绕过,获取数据
还是上次的站点,简单的判断,存在注入
发现and 数字、exec、union select、 select 数字。。。被过滤
发现execute函数没被过滤,狗没出来说明这个函数能用
execute(‘sql语句‘) //execute函数中可以写sql语句,且为字符串,那么就可以传入一些变形字符串来绕过waf
本地验证一下
一些变形
只是本次使用sql server堆叠注入,并不会将数据展示在页面,所以要让这一次的堆叠出错,达到报错注入的效果
execute(‘select convert(int,@@version)‘) --a
当然需要变形一下,不然会被拦截,因为出现了select
execute(‘sel‘%2b‘ect convert(int,@@version)‘) --a //在url编码中 %2b 等价与 + 所以可以理解为 ‘sel‘ + ‘ect‘
通过execute函数,可进行变形导致waf无法拦截,获取数据或执行sql语句就变得简单多了
执行cmdshell,由于cmdshell不能通过报错回显,但是可以将结果重定向到文件中或写入表中
execute(‘master..xp_cmdshell whoami > e:\‘%2b‘\xx\‘%2b‘\1.txt‘) // 双斜杠被过滤
返回报错并没有关系,waf没有拦截,查看1.txt是否有数据
本来想写入webshell或通过公网下载webshell,但服务器不能出外网,且有waf,导致写shell失败,考虑后想kill掉waf,但还是避免对服务器造成影响。。
原文:http://blog.51cto.com/z2ppp/2064423