sql限定注入

一、堆叠注入

优点:

        可以同时执行多条语句,每个语句之间用“;”隔开,并且可以增删改查,和union查询不同,union查询只能查询没有增删改的能力。

缺点:

        调用的接口必须使用mysql_multi_query()这个函数执行mysql语句,如果使用的是mysql_query语句则无效果。

用法:

和普通注入盲注一样使用。

二、宽字符注入

原理:

        当传递一个参数id=1‘得时候,当我们输入这个单引号,会被认为是非法字符,会被过滤函数添加“\”给过滤掉,所以我们想要程序接受我们传递得参数中包含单引号,那么就需要把这个转义字符“\”干掉,当http协议传输得时候,是要经过url编码的,如果这个编码完成后,传递到服务器时,我们可以在单引号前加上一个%81这样得编码,最后这样解码得时候,这个%81就会和“/”对应得编码相结合按照gbk编码要求去解码,最后只剩下个单引号。

宽字符在线查询:

GBK 编码范围, GBK 编码表GBK编码采用双字节编码方案,其编码范围:8140-FEFE,剔除xx7F码位,共23940个码位。共收录汉字和图形符号21886个,其中汉字(包括部首和构件)21003个,图形符号883个。https://www.qqxiuzi.cn/zh/hanzi-gbk-bianma.php

优点:

        当一个网站限制了特殊字符的时候此时就可以尝试宽字符注入。宽字符把特殊字符进行转义。

缺点:

       1、注入目标的数据库必须使用GBK编码格式。目前绝大多数网站用的是utf8编码,所以可用场景非常少。

        2、或者使用了addslashes(),mysql_real_escape_string(),mysql_escape_string()之类的函数。

例子:

1、确定是否存在宽字节

?id=1%81'#

2、查找是否可以注入

?id=1%81' and 1=1 # 
?id=1%81' and 1=2 # 

3、确定字段个数

?id=1%81' order by N #

4、查找显示位

?id=1%81' union select 1,2,3 #

5、注入 

id=-1%81' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema= database() and table_name = 0x7573657273
#如果限制的特殊字符' 如果需要查寻的时候可以改成16进制编码 例如0x7573657273 就是user

1、如果在sql中无法插入字符串 可以把字符串改成16进制代码。
2、如果在sql中无法插入字符串 可以使用嵌套查询,从某个表中查询出来的结果放到sql查询语句中。

三、二次注入

原理:

从正常的途径插入恶意语句,然后从正常途径执行恶意语句。例如创建账号插入sql语句,当登录时,去数据库查询的时候执行了插入的sql语句。

例子:

1、创建账号test,密码111111

2、创建账号test'#,密码222222

此时数据库里的值 

3、 登录test’#账号

4、修改账号test’#,密码333333

此时数据库里值

这里改的是账号test’# 但是实际改的却是test的账号因为在查询的过程中使用的是test'#在执行的时候'#被当作了特殊字符没有参加执行所以修改的是test账号的密码。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值