SQL注入-二次注入

特别声明:该文章只运用于学习安全测试交流之用,请勿用于其他

二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。

二次注入,可以概括为以下两步:

第一步:插入恶意数据

进行数据库插入数据时,对其中的特殊字符进行了转义处理,在写入数据库的时候又保留了原来的数据。

第二步:引用恶意数据

开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出恶意数据,没有进行进一步的检验的处理。

配合下图可以有更好的理解:


图-1


二次注入方法

这里我们使用sqli-labs/Less24为例,进行二次注入方法的练习。

插入非法字符

图-1


使用账号登录,然后修改密码,密码修改成功

图-2

$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";

这是因为上面的数据库更新语句,在用户名为 "admin'#" 时执行的实际是:

$sql = "UPDATE users SET PASSWORD='$pass' where username='admin'#' and password='$curr_pass' ";

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 二次注入 最近在看到《Web安全攻防 渗透测试实战指南》说了关于二次注入的问题,以前就听过二次注入,但是没有深入了...
    seeiy阅读 6,861评论 0 0
  • 二次注入原理 二次注入可以理解成,攻击者先将攻击语句插入到数据库中,然后再调用攻击语句,完成攻击。 下面自己搭建环...
    BuFFERer阅读 3,142评论 0 0
  • 01 二次注入原理 二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所...
    Ackerzy阅读 23,858评论 3 13
  • 转自一个不知名大佬的笔记 ----------------------------------less-24---...
    Yix1a阅读 4,398评论 0 1
  • 二次注入漏洞是一种在Web应用程序中广泛存在的安全漏洞形式。相对于一次注入漏洞而言,二次注入漏洞更难以被发现,但是...
    BerL1n阅读 11,240评论 0 1