sql注入-不同数据类型注入

  

数据类型注入 - 数字型   字符型   搜索型  加密型(base64 json)等

数字型【$id】:正常注入即可,不用考虑闭合情况

字符型【"$id"或者'$id'】:需要考虑闭合情况,末尾加上--+或#   

搜索型【'%$id%'】:需要考虑闭合情况

加密型【id=MD==】:把注入语句根据网站传递数据的编码/加密类型来编码或加密后再进行注入

闭合情况:根据报错回显或者源码来分析闭合情况

 

数字型注入:

 

 

 

字符型注入:

正常注入报错无回显

查看源码,发现使用了【''】

 

注入时闭合,成功查询出数据库

 

 

搜索型注入:

查看源码,获取闭合情况,使用【'%%'】

注入时闭合

 

 

 

 

 

加密型注入:

打开发现参数被编码,看来我们的注入语句也要进行编码才行

将注入语句编码

注入成功获取数据库名

 

 

使用sqlmap爆破加密型注入

python sqlmap.py -u "http://127.0.0.1/news.php?base=MQ==" --dbs --tamper=base64encode.py

--tamper    #利用给定的脚本篡改注入数据

运行发现出不来结果,明明手工都出来了,查看发现工具只测试了10个字段,但是有17个字段

 

使用测试--level参数加大测试力度再次进行测试

python sqlmap.py -u "http://127.0.0.1/news.php?base=MQ==" --dbs --tamper=base64encode.py --level=3

--level      #测试力度(1-5)级

 

成功爆出数据库

 

宽字节注入:

为什么产生宽字节注入?

         原因是程序员为了防止SQL注入,就会调用几种转义函数,将单引号或双引号进行转义操作,转义无非便是在单或双引号前加上斜杠(\)进行转义 ,但这样并非安全,因为数据库使用的是宽字节编码,两个连在一起的字符会被当做是一个汉字,而在PHP使用的UTF8编码则认为是两个独立的字符,如果我们在单或双引号前添加一个字符,使其和斜杠(\)组合被当作一个汉字,从而保留单或双引号,使其发挥应有的作用。但添加的字符的Ascii要大于128,两个字符才能组合成汉字 ,因为前一个ascii码要大于128,才到汉字的范围 ,这一点需要注意。

 

转义函数:

addslashes()                                     #函数返回在预定义字符之前添加反斜杠的字符串

mysql_real_escape_string()          #函数转义 SQL 语句中使用的字符串中的特殊字符

mysql_escape_string()                   #转义一个字符串

 

addslashes()函数:单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)这些字符都会被转义

 

 

我们给字符型注入传递的参数使用addslashes()函数包裹

可以发现就算闭合了【''】依然无法注入成功,是因为我们输入的【'】被在前加上斜杠(\)进行了转义,无法发挥作用

在单或双引号前添加一个Ascii要大于128的字符,使其和斜杠(\)组合被当作一个汉字,从而保留单或双引号的作用即可。

Ascii大于128的字符如:%df

 

在注入语句【'】前添加%df,成功查询出数据库

 

使用sqlmap爆破

使用--tamper模块中的unmagicquotes.py脚本

 

python sqlmap.py -u "http://124.70.71.251:46715/new_list.php?id=1" --dbs --tamper=unmagicquotes.py

 

 

 

 

 a

  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoheizi安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值