下面的文章写出了SQL注入的报错,布尔,时间注入的POC,通过这三个POC的编写来进入编写POC的入门。
基于报错的 SQL 注入 PoC 编写
选择的漏洞为CmsEasy最新版5.5_UTF-8_20140802多处SQL注入 :http://wooyun.jozxing.cc/static/bugs/wooyun-2014-070827.html
漏洞分析
漏洞分析在原文已经说的很详细了,大可以回原文查看。
我们在编写 PoC 的时候,如果原文中已经给出了具体的利用办法,我们就无需再关注整个漏洞的成因和原理,我们只用看这个漏洞的复现方式。
阅读原文后我们得到了 payload 和 目标 URL
漏洞复现
实验所需要 CMS 的下载地址: http://pan.baidu.com/s/1i4lAwBF
安装完毕后,我们就可以进行手工复现利用过程了
基于 Bugscan 框架编写POC
Bugscan 框架要求所有的逻辑代码都必须是基于 Python 2.7 的标准库的,所以像 requests 这种第三方库就不能在这里使用了
Bugscan配置环境:http://doc.bugscan.net/chapter1/1-1.html
代码编写
说明
整体结构就像上面说的那样,最上面,是引入自己要用到的标准库,assign 就是任务分配函数,是来判断本次扫描任务是否可以调用这个 PoC 的, audit 就是整个验证逻辑的入口了,最下面的 if name == ‘main’: 这段代码是为了让你在本地测试用的。
基于布尔的盲注的 SQL 注入 PoC 编写
选择漏洞为Sqli labs Less-5
漏洞分析
目标URL http://127.0.0.1/sqli/Less-5/index.php?id=1
存在注入的参数是 id,由于sql 语句执行的选择后,选择的数据不能回显到前端页面,所以注入的类型是 Boolean-Based Blind
漏洞复现
请求的SQL语句
构造语句
对比两个 Payload, 发现唯一的差别就是 4343=4343 和 4343=4342 了,当然这里的这个数字嘛,随便写的
访问上面两个链接之后发现,第一个请求的响应页面中You are in………..,而第二个请求的响应页面中没有
基于 Bugscan 框架的扫描插件编写
|
|
基于时间的盲注的 SQL 注入 PoC 编写
选择的漏洞为Sqli labs Less-5
同一个漏洞有时间我们可以用不同的利用方式
漏洞分析
构造语句
核心的 SQL 语句是这样的, select if(1=1,sleep(5),1) 熟悉 MySQL 语法的人应该知道这个意思,第一个参数是表达式,就是说如果表达式为真的话,就执行第二个参数位置的语名,在本例子中是 sleep 5秒,如果为假就执行第三个参数位置的语句,本例子中就是返回一个字符 1
漏洞复现
|
|
我们打开 Firefox 浏览器,开启 hackbar, 再打开开发者工具,调到网络选项卡,可以看到不同的GET所花费的时间的不同
基于 Bugscan 框架的扫描插件编写
|
|