在实习的渗透测试项目中,遇到的数据库系统绝大部分是 SQL Server。也算是了解和熟悉 Mssql 的一个重要过程吧。
0x01 基础
常用查询
|
|
常用内置函数
|
|
like
查询大小写敏感模式
|
|
- 举例分析 Chinese_PRC_CS_AI_WS
- 前半部份:指 UNICODE 字符集,
Chinese_PRC_
指针对大陆简体字 UNICODE 的排序规则。 _BIN
二进制排序_CI(CS)
是否区分大小写,CI
不区分,CS
区分_AI(AS)
是否区分重音,AI
不区分,AS
区分_KI(KS)
是否区分假名类型,KI
不区分,KS
区分_WI(WS)
是否区分宽度,WI
不区分,WS
区分
- 前半部份:指 UNICODE 字符集,
实现 limit m,n
查询结果中第 7 条到第 9 条记录,如 MySql 中的 limit 7,3
|
|
0x02 关于xp_cmdshell
|
|
彻底防御xp_cmdshell方法:修复sql注入漏洞、删除 xplog70.dll 组件
0x03 利用数据类型转换报错注入
- and 可用:
?key=aa'+and+db_name()>1
- and 不可用:
?key='%2buser^1
- convert 转换类型:
?key=a'%2b(convert(int, @@version))
0x04 Tricks
set 绕过 select 过滤
|
|
有趣的绕过例子
输入单引号时会报错
尝试%23和–+-的注释来判断后端数据库系统类型。语句出错的时候返回200并报错。正确的时候是302。可知为mssql。
服务端对数据进行了拦截和过滤,拒绝处理请求。然而可利用varchar^int
来爆出数据。
|
|
拦截有点厉害。尝试了许多select方式都不行。
|
|
不过还是存在规则缺陷的。
|
|
可爆出任意数据
|
|