CTF-Hub SQL 字符型注入(纯手动注入)

题目很明确是字符型注入,所有先尝试单引号

由于输入1' 出现页面错误,且1不会出现页面错误,推断出该 sql 语句是使用单引号进行闭合的。(因为题目比较简单,已经把执行的 sql 语句一同打印在了底下)

开始注入(工具hackerBar)

尝试列数:

先使用 union 语句尝试 select 1;--+ 语句,发现出现错误不回显,因此不止一列

使用 union 语句尝试 select 1,2;--+ 语句

发现成功回显,确定该表为两列。

但此时显示的并不是我们注入的数据 1 和 2,所以推断出 页面回显可能只回显 一行,所以可以将 查询的 id=1 改成一个不存在的 id ,这样就能查询到我们想查询的信息了。

可以看到 1 和 2 都回显了,说明 数据库的两个列字段都能回显。

爆库(因为题目中 flag所在的表 在当前数据库中,所以可跳过)

用 mysql 自带的 database() 替换掉列中的1即可。

可以看到数据库名为sqli

爆表(关键表:information_schema.tables)

现得信息:

  1. 库:sqli
  2. 表:?
  3. 列:?

information_schema.tables是 mysql 中的系统表,里面存有 mysql 中所有表的信息。在information_schema.tables中有两个列比较重要,一个是 table_name ,另一个是 table_schema。table_name 存有所有数据库的表名,table_schema 存有所有表对应的数据库名。

由于我们现在想爆破的库是当前的库(sqli或者可以直接用 database() 代替),所以在后面加上限制语句 where table_schema=database()。

此时发现有一个 flag 表。

sql 复制代码
1' union select 1,table_name from information_schema.tables where table_schema=database();--+

爆列(关键表:information_schema.columns)

现得信息:

  1. 库:sqli
  2. 表:flag
  3. 列:?

information_schema.columns是 mysql 中的系统表,里面存有 mysql 中所有列的信息。由于知道库和表,在原有条件后加上where table_name='flag';

sql 复制代码
-1' union select 1,column_name from information_schema.columns where table_schema=database() and table_name='flag' --+

发现列名也为 flag。

得到flag

现得信息:

  1. 库:sqli
  2. 表:flag
  3. 列:flag

基本 union 一条 select 查询语句即可。

sql 复制代码
-1' union select 1,flag from flag --+
相关推荐
2301_780789664 小时前
UDP和TCP的主要区别是什么
服务器·网络协议·web安全·网络安全·udp
一只栖枝6 小时前
HCIA-Security 认证精讲!网络安全理论与实战全掌握
网络·web安全·网络安全·智能路由器·hcia·it·hcia-security
scheduleTTe8 小时前
SQL增查
数据库·sql
晨欣9 小时前
大型语言模型(LLM)在网络安全中最具商业价值的应用场景(Grok3 回答 DeepSearch模式)
网络·web安全·语言模型
上海云盾-高防顾问14 小时前
电商行业如何做好网络安全工作?
网络·安全·web安全
鼓掌MVP14 小时前
网络安全威胁下的企业困境与破局技术实践
网络·安全·web安全
SoFlu软件机器人18 小时前
告别手动报表开发!描述数据维度,AI 自动生成 SQL 查询 + Java 导出接口
java·数据库·sql
运维有小邓@19 小时前
内部文件审计:企业文件服务器审计对网络安全提升有哪些帮助?
运维·服务器·web安全
云边散步21 小时前
🥢 第2篇:SELECT就是点菜,FROM就是菜单 —— 写你人生第一句SQL!
sql·mysql
黑客老李1 天前
web安全入门 | 记新手小白初次尝试挖越权漏洞
安全·web安全·网络安全学习路线·黑客入门·web安全入门·web安全测试