声明:本教程为笔者原创,转载需征求笔者同意,写完一系列很累的 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字不给发,所以拆成了几个小节来推喽。要怪就只能怪我太特么能扯犊子了,我发誓我真不是骗粉啊。真等不及的小伙伴可以直接点阅读原文去看完整版的哈。
对喽,那天有个小伙伴给我说我在文章里面传播淫秽色情网站,当时我就懵逼了,有人居然会去点那个随手写的链接。 -_-||
长按便可关注我们
本文始发于微信公众号(inn0team):PoC 编写指南(第 2 章 SQL 注入类 PoC 编写 一)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论