DNS 带外
在进行盲注且不能堆叠查询的情况下,可以利用以下几个方法进行 DNS OOB
-
fn_xe_file_target_read_file()
要求权限:VIEW SERVER STATE
-
fn_get_audit_file()
要求权限:CONTROL SERVER
-
fn_trace_gettable()
要求权限:CONTROL SERVER
基于错误查询
一般会使用 +AND+1=@@version–
和 OR
来触发异常,很可能被 waf 拦截。可以通过 %2b
配合下列函数来代替:
举个例子
一句话
-
查询 schema & tables & columns
-
利用 JSON 格式化错误
读取文件
利用 OpenRowset 函数读取本地文件,需要 ADMINISTER BULK OPERATIONS 或者 ADMINISTER
DATABASE BULK OPERATIONS 权限
基于错误查询:
waf bypass
-
%C2%85
或 %C2%A0
可以代替空格
-
混淆 UNION 关键字
-
FROM 和列名中间用句号代替空格
-
SELECT 和列名之间用 \N
代替空格
不使用 xp_cmdshell 执行系统命令
COM
sp_oacreate 是一个非常危险的存储过程,可以删除、复制、移动文件,还能配合
sp_oamethod 来写文件执行 cmd。sp_oacreate 和 sp_oamethod 两个过程分别用来创建和执行脚本语言,换言之就是 xp_cmdshell 能执行的 sp_oacreate+sp_oamethod 同样能胜任。
wscript.shell 存在一个 exec 方法可以执行系统命令并获得回显:
CLR
可以看做成 mysql 的 UDF,不过可以直接使用 16 进制代码来创建自定义函数,不需要写文件。