sql注入之AJAX(SQL Injection (AJAX/JSON/jQuery))

sql注入之AJAX(SQL Injection (AJAX/JSON/jQuery))
javascript

    0x1   
php

网上搜下没有关于ajax的sql注入文章,这里简单写一下抛砖引玉。java

原理本身百度,这里简单说下:ajax

经过在后台与服务器进行少许数据交换,AJAX 可使网页实现异步更新。这意味着能够在不从新加载整个网页的状况下,对网页的某部分进行实时更新。sql

    0x2数据库

我这里用一个漏洞示例程序bWAPP来演示,先看下正常访问的状况:服务器

输入框输入a实时更新出查询结果,地址栏地址为http://192.168.1.102/bWAPP/sqli_10-1.php?search=a异步

从新载入这个url是没有任何查询结果的,由于没有通过页面中javascript的AJAX处理其实没有查询数据库,那么注入点天然不在这里函数

下面来寻找真正的注入点吧测试

查看网页源码,查询输入框的表单action会只想ajax的代码所在,找到ajax所在的javascript代码以下:

提取关键代码以下:

//输入框的表单name为title,此处获取并处理建立一个key:value键值对赋值给search变量,该键值对形式与GET和POST的data同样,例如title=a
var search = {title: $("#title").val()};
//getJSON函数请自行百度查阅
//一、sqli_10-2.php即把数据提交到此文件,也就是说其实ajax查询数据是这个文件在处理
//二、search是存储的键值对,这里提交。正常查询时候是GET方法,那么这里也是GET方法,处理后的GET实际上是 
//三、第三个参数是查询成功后处理要调用的函数,这里是格式化了输出,咱们忽略
$.getJSON("sqli_10-2.php", search, function(data){
//后面的代码是格式化处理查询结果的,咱们不用关注
}

    0x3

理论完了,注入点就很明了了

可是直接地址栏提交http://192.168.1.102/bWAPP/sqli_10-2.php?title=a 是不行的

好像是这里要验证Referer是http://192.168.1.102/bWAPP/sqli_10-1.php?search=a

那咱们用brupsuite抓包修改,这很少说你们都会。

加 ' 测试注入漏洞,下面看下返回页面,报数据库错误:

后面的注入就不说了,这里简单sqlmap演示下结果:

相关文章
相关标签/搜索