二次SQL注入举例详解

  • A+
所属分类:网络安全文章
腾讯云网站解决方案帮您轻松应对建站成本高/网络不稳定/安全漏洞多/单点部署无冗余等常见问题,满足电商/直播/教育等日均PV1-100万的网站部署需求。


成都、重庆区云产品3折特惠,全新机型计算提速,最高睿频可达3.7GHz

二次SQL注入举例详解

介绍

二次Sql注入是一个应用程序漏洞,它发生在用户提交的值存储在数据库中,然后它被应用程序中的某些其他功能使用而不转义或过滤数据。

通常来自外部源(用户提供的)的数据被认为是危险的并且被转义/过滤。开发人员信任来自数据库的数据。此行为类似于Stored Cross Site Scripting攻击。

二次SQL注入示例

为了演示此漏洞,我准备了易受攻击的用户登录,注册和密码更改功能。让我们说用户注册,然后登录并更改密码。它在所有动态Web应用程序中非常常见。

首先我们来模拟登陆,用户需要注册或登录。用户名“cesafe”和密码“ cesafe123”登录

成功登陆后,它会确定用户名"cesafe"正确进行身份验证。

我再创建了一个新用户,用户名为"cesafe'-",密码为“ cesafe123456 ”。

请注意,用户名值 "cesafe'-" 实际上是sql注入有效负载,它没有被转义或截断,按原样保存在数据库中。

所以基本上到目前为止我们已经注册了两个用户名。“cesafe”和"cesafe'-"使用不同的密码。注册帐户后,我使用用户名“cesafe' - ”登录

由于页面提供了密码更改功能,我将密码从“cesafe123456”更改为“cesafe666”。  注意,用户名是“cesafe' - “因此,我们为此用户名构造密码更改查询。

  1. UPDATE users
  2. SET password='cesafe123456'
  3. WHERE username='cesafe'-' and password='cesafe666'

现在,因为WHERE子句中的用户名是" cesafe'- ",而不是After -查询作为注释被丢弃,因为  -用于在SQL中启动注释。查询最终如下:

  1. UPDATE users
  2. SET password='cesafe123456'
  3. WHERE username='cesafe'

查询导致更新用户“cesafe”的密码而不是“cesafe - ”  因此成功执行二阶sql注入。二阶SQL注入也适用于其他场景,其中数据库中的数据是要检索的,希望它能解释这个概念。

CE安全网

发表评论

您必须登录才能发表评论!