web安全攻防笔记二:SQL注入

SQL注入

一、SQL注入的概念

1、原理
  • SQL注入就是指web应用程序对用户输入数据的合法性没有进行判断的前提下
  • 前端传入后端的参数是攻击者可控的,并且参数带入数据库查询
  • 攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作
2、前提
  • 用户参数可控
  • 参数可带入到数据库,并且拼接到SQL语句,最后数据库要执行这些SQL语句(静态网页的话就不行,因为静态网页中浏览器即用户没有和数据库交互)
3、危害
  • 数据库敏感信息泄漏
  • 页面被篡改
  • 数据库被恶意操作
  • 服务器被远程控制
4、形成的原因
  • 数据与代码严重分离
  • 用户提交的参数数据未做充分检查过滤就被带入到SQL命令中,原有的SQL命令的语义被改变,且成功被数据库执行了

二、SQL注入

1、注入过程
  • 客户端参数值等数据被修改
  • 服务端将未经检查和过滤的数据直接注入到SQL语句中
  • 数据库执行被修改后的SQL命令
  • 服务端将执行后的结果返回给客户端
  • 客户端根据获取到的敏感信息进行进一步注入
2、分类
2-1、根据注入位置的数据的类型
  • 字符串注入
  • 数字注入
2-2、根据返回结果
  • 显错注入(error-based)
  • 盲注
    • 布尔类型 boolean blind
    • 时间类型 time-based blind
3、get类型
  • get类型基于报错的SQL注入
  • get基于报错的SQL利用
  • get基于时间的盲注
    • if(ascii(substr(database(),1,1)=115,1,sleep(3)))
  • get基于布尔的盲注
    • select lenght(database())
    • select ascii(substr(database(),1,1))>N
4、post类型
  • POST类型基于报错的SQL注入
    • 单引号/双引号/括号/以上三个联合
  • POST基于时间的盲注
5、SQL注入绕过的手段
  • 去除注释符号的SQL注入
    • ’ or ‘1’='1
  • 过滤and 和or的SQL注入
    • 用符号替换 && ||
    • 大小写 双写
  • 空格URL编码
    • %20
  • 大小写
    • and AnD
  • URL编码
    • https://www.w3school.com.cn/tags/html_ref_urlencode.html
  • 双写
    • oorr
  • 内联注释
    • /!select * from users/
6、绕过登录/post类型的SQL注入
  • 绕过登录界面的账号密码输入(无需输入正确的账号密码即可)
7、获得敏感信息思路/get方法
  • 1、首先查看有没有注入点
    • 数字
    • 字符
      • 单引号/双引号/括号/以上三个联合
    • 反斜线
      • 起到转义作用
  • 2、接着看注入点对应的表中字段数目
    • order by
  • 3、尝试替换要查询的SQL语句
  • 4、查看MySQL版本
    • 5以及5以上
      • 会有一个information_schema的数据库
      • 里面存储着DB服务器中存在的所有数据库名、表名、列名
  • 5、查询获取数据(用户名密码)
    • 信息在information_schema表里面
    • 使用联合查询union [all]
8、MySQL注入读写文件
  • load_file
    • 读取文件
    • 前提条件
      • 用户权限要够
      • secure_file_priv不为null
  • into outfile
    • 写入文件
    • 前提条件
      • general_log=on
  • 文件路径
    • 使用绝对路径
  • sqlmap进行测试
    • –file-read
9、HTTP头中的SQL注入
  • user-agent
  • cookie
    • 保存用户信息在浏览器中
    • sqlmap --level 3
  • referer
  • updatexml
    • 报错的信息
  • 闭合引号的方式
    • ’ or ‘1’='1
  • -r target.txt
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值