[SUCTF 2019]EasySQL

本题考查SQL注入

在输入框中随便输入数字(如 1)提交,页面返回正常。

尝试输入分号 ; 测试是否存在堆叠注入

发现页面没有报错,且可以正常执行,说明后端支持多语句执行(堆叠注入)。接着查看数据库中的表:

发现存在列名为flag,尝试读取这个列

1;show columns from Flag

说明存在过滤

这道题的后端源码逻辑大致类似于

php 复制代码
$sql = "select " . $_POST['query'] . " from Flag;";
$result = mysqli_query($conn, $sql);

payload:

*,1

将输入代入后端的 SQL 语句中,整条语句会变成:

select *,1 from Flag;

因为* 在 SQL 中代表查询表中的所有列。

,1 表示在所有列后面额外拼接一个常量列 1。

因为后端本身已经自带了 from Flag,你通过输入 *,1 直接闭合或补全了 select 子句,强制让数据库把 Flag 表里的所有列(包括藏有 Flag 的那一列)全部原封不动地查询并展示出来,从而绕过了对 select 或列名的过滤限制

解法二:堆叠注入修改 sql_mode

通过堆叠注入修改 MySQL 的 sql_mode,将 || 运算符由"逻辑或"变为"字符串连接符"

原语句变为:SELECT CONCAT(输入, flag) FROM Flag

payload:

1;set sql_mode=PIPES_AS_CONCAT;select 1

select 1触发查询 → 因||转为连接符,返回1与flag拼接的结果

相关推荐
ss2731 小时前
PG实战笔记 | 09 PostgreSQL psql客户端基本操作
数据库·笔记·postgresql
xxwl5851 小时前
区域赛分类题解
c++·笔记·学习·算法
成都蜀味缘餐饮技术培训学校4 小时前
油炸串串技术培训实战指南,核心食材选购与预处理标准
数据仓库·经验分享·笔记·课程设计·微信公众平台
摇滚侠4 小时前
《大模型应用开发实践:基于 Spring AI+DeepSeek 实现》第 11 章 大模型技术概览 阅读笔记 1
人工智能·笔记·spring
xxwl5856 小时前
区域赛算法模版第八章---贪心(Greedy)
c++·笔记·学习·算法
知产xiao_xin7 小时前
专利立法及修改
经验分享·笔记·知识产权
qq_284274057 小时前
S7-1200 PLC硬件与启保停实训:CPU选型与DC/DC/DC、循环扫描五阶段、博途组态及电动机启停自锁梯形图(含考点)
笔记·学习·自动化·制造
问心无愧05138 小时前
[GXYCTF2019]Ping Ping Ping
android·笔记
ACP广源盛139246256738 小时前
项目评估记录:4K 远距离视频 Serdes 传输方案调研,GSV5800@ACP参数与工程问题记录
笔记·硬件架构·音视频·视频·国产芯片