PoC 编写指南(第 2 章 SQL 注入类 PoC 编写 一)

admin 2021年8月24日21:42:10评论289 views字数 1996阅读6分39秒阅读模式

声明:本教程为笔者原创,转载需征求笔者同意,写完一系列很累的 T_T。


2.1 SQL 注入基础


准备完这些通用的基础知识之后,我们就可以开始编写自己的第一个 PoC 了。


为什么要选 SQL 注入作第一个呢?因为它最常见,相信看本教程的你肯定在这之前都了解了,没了解我也装作你了解了给你讲,你上学的时候老师不都这么干的嘛。


2.1.1 SQL 注入原理


SQL 注入漏洞 是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入 SQL 指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的 SQL 指令而运行,因此遭到破坏或是入侵。


如果你不懂什么是 SQL 注入的话,这里我推荐去看 sqli-labs 这是目前我见过的最详细讲解 SQL 注入的资料了。不过都是纯英文的,但是也没多少难度。FreeBuf 上有两篇对应的中文介绍,你也可以去看看,相信对你是有帮助的。


SQLi Labs (地址:https://github.com/Audi-1/sqli-labs)


安全科普:SQLi Labs 指南 Part 1 (地址:http://www.freebuf.com/articles/web/34619.html)


安全科普:SQLi Labs 指南 Part 2 (地址: http://www.freebuf.com/articles/web/38315.html)


倘若要是连 SQL 是什么都不知道的话,我觉得吧,磨刀不误砍柴工,你觉得呢?

2.1.2 SQL 注入分类


分类这种东西对是相对的,看你站在什么角度了,我一直都很讨厌这些分类,如果你仔细去研究这些个分类,你会觉得这世界上的发明家太多了,想一出是一出啊。

反正我也是发明家,下面这些个分类是我个人的见解。


按照注入点类型来分类


  • 数字型注入点

    在 Web 端大概是 http://xxx.com/news.php?id=1 这种形式,其注入点 id 类型为数字,所以叫数字型注入点。这一类的 SQL 语句原型大概为 select * from 表名 where id=1

  • 字符型注入点

    在 Web 端大概是 http://xxx.com/news.php?name=admin 这种形式,其注入点 name 类型为字符类型,所以叫字符型注入点。这一类的 SQL 语句原型大概为 select * from 表名 where name='admin'。注意多了引号。

  • 搜索型注入点

    这是一类特殊的注入类型。这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有“keyword=关键字”,有的不显示在的链接地址里面,而是直接通过搜索框表单提交。
    此类注入点提交的 SQL 语句,其原形大致为:select * from 表名 where 字段 like '%关键字%'

按照数据提交的方式来分类


这种分类其实只是 HTTP 传递数据的方式不同,严格来讲和 SQL 没多大关系,但是在编写 PoC 的时候,这会影响到我们的代码中发送数据的形式,所以我在这里提出来了。

  • GET 注入

    提交数据的方式是 GET , 注入点的位置在 GET 参数部分。比如有这样的一个链接http://xxx.com/news.php?id=1 , id 是注入点。

  • POST 注入

    使用 POST 方式提交数据,注入点位置在 POST 数据部分,常发生在表单中。

  • Cookie 注入

    HTTP 请求的时候会带上客户端的 Cookie, 注入点存在 Cookie 当中的某个字段中。

  • HTTP 头部注入

    注入点在 HTTP 请求头部的某个字段中。比如存在 User-Agent 字段中。严格讲的话,Cookie 其实应该也是算头部注入的一种形式。因为在 HTTP 请求的时候,Cookie 是头部的一个字段。

按照执行效果来分类


这个分类也是 SQL 注入神器 sqlmap 所支持的注入模式,这个的分类的依据也是后面我们用 PoC 判断是否存在注入的依据。

  • 基于报错注入

    这一类的也叫有回显注入,页面会返回错误信息,或者是把注入语句的结果直接返回在页面中。

  • 基于布尔的盲注

    根据返回页面的结果判断构造的 SQL 条件语句的真假性

  • 基于时间的盲注

    当根据页面返回的内容不能判断出任何信息时,使用条件语句查看时间延迟语句是否执行,也就是看页面返回时间是否增长来判断是否执行。

我们后面会以执行的效果来讲怎么写每一类的 PoC。




药丸君来解释下这篇为啥子这么短 :  


我先声明我不短啊,公众号有字数限制超过2W字不给发,所以拆成了几个小节来推喽。要怪就只能怪我太特么能扯犊子了,我发誓我真不是骗粉啊。真等不及的小伙伴可以直接点阅读原文去看完整版的哈。


对喽,那天有个小伙伴给我说我在文章里面传播淫秽色情网站,当时我就懵逼了,有人居然会去点那个随手写的链接。 -_-||




PoC 编写指南(第 2 章 SQL 注入类 PoC 编写 一)

inn0team只是一个正在成长的小的安全团队
微信号:inn0team
PoC 编写指南(第 2 章 SQL 注入类 PoC 编写 一)

长按便可关注我们





本文始发于微信公众号(inn0team):PoC 编写指南(第 2 章 SQL 注入类 PoC 编写 一)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年8月24日21:42:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PoC 编写指南(第 2 章 SQL 注入类 PoC 编写 一)https://cn-sec.com/archives/353440.html

发表评论

匿名网友 填写信息