SQL注入原理与防御姿势(问答方式 描述)

本文详细介绍了SQL注入的工作原理、常见危害及分类,包括基于不同类型的注入点、服务器响应内容及注入顺序。此外,还探讨了MySQL注入中常用的函数、盲注优化手段及常用语句,并解释了宽字节注入原理、二阶注入的概念及其与普通注入的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL注入原理?

通过把SQL命令插入到Web表单提交或者输入域名或者页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令


SQL注入危害?

数据库层面
  1. 非法读取、篡改、添加、删除数据库中数据
  2. 盗取用户的各类敏感信息,获取利益·
  3. 通过修改数据库修改网页上的内容
  4. 私自添加或者删除账号
操作系统层面
  1. 网页篡改
  2. 网络挂马
  3. 服务器远程控制

SQL注入有哪些分类?

基于注入点值
  • 数值型 sql=“select * from admin where id=1”
  • 字符串型 sql=”select * from 表 where id =“xxx””
基于从服务器返回的内容
  • 有回显(基于错误的)
  • 无回显(盲注)
  1. 布尔盲注
  2. 时间盲注
按照注入的程度和顺序
  • 一阶注入
  • 二阶注入

MySQL注入中常用的函数?

user();查看当前Mysql登录用户名
database():查看当前Mysql数据库名
version():查看当前Mysql版本
@@version
@@basedir
length() 字符串长度
substring()截取字符串
ord 返回ASCII码值
concat 连接字符串
sleep(4) 睡眠指定描述
group_concat() 查询结果放同一行
limit m,n 从m行开始,到m+n行。
mid()需要截取的字符串
group_concat() 查询结果放同一行


盲注有哪些优化手段?

1、普通字符加正则表达式联合优化猜解
2、二分查找算法
3、按位方法


盲注有哪些常用语句?

?id=1’ and if(ascii(substr(database(),1,1))>95,sleep(6),1)%23
select length(databse());
select substr(databse(),1,1);
select ascii(substr(database(),1,1));
select ascii(substr(database(),1,1))>N;
select ascii(substr(database(),1,1))=N;
select ascii(substr(database(),1,1))<N;


HTTP头中有哪些信息?

User-Agent、Referer、Cookies等


宽字节注入原理?

mysql使用GBK编码的时候,会认为两个字符是一个汉字。

数据库使用的是GBK编码,PHP编码为UTF8就可能出现宽字节注入,网站为了防止发生SQL注入,会调用addslashes()等一些特殊函数,将单引号或双引号进行转义操作,即在单或双引号前加上斜杠(\)。当数据库使用的是宽字节编码会将两个连在一起的字符会被当做是一个汉字,而在PHP使用的UF8编码则认为是两个独立的字符。


什么是二阶注入?

二次注入是指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入。

二阶注入与普通注入的区别?

普通注入:

  • 在http后面构造语句,是立即直接生效的
  • 一次注入很容易被扫描工具扫描到

二次注入:

  • 先构造语句(有被转义字符的语句)
  • 我们构造的恶意语句存入数据库
  • 第二次构造语句(结合前面已经存入数据库的语句,成功。因为系统没有对已经存入数据库的数据做检查)
  • 二次注入更加难以被发现

SQL注入绕过方式?

常用绕过方式

  • 大小写绕过
  • 双写绕过
  • 编码绕过
  • 内联注释绕过

怎么绕过去除注释符的sql注入?
  1. 利用or ‘1’='1闭合单引号
  2. 配合联合查询

怎么绕过去除and和or的SQL注入

1、大小写变形,Or,OR,oR,OR,And,ANd,aND等 -代码中大小写不敏感都被剔除
2、在这两个敏感词汇中添加注释,例如: a/**/nd 双写绕过oorr
3、利用符号替代–and --&& --or–||


怎么绕过去除空格的sql注入

编码绕过: hex,urlencode
空格URL编码%20
%09 TAB键(水平)
%0a新建一行
%0c新的一页
%0d return功能
%0b TAB键(垂直)


怎么绕过去除union和select的sql注入

大小写
双写


SQL注入的防御

预编译
限制输入长度
过滤关键词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值