sql-labs通关全解---有关二次注入--less24--9

二次注入是当已转义的用户输入数据被存储并在后续查询中未重新过滤而引发的SQL注入问题。这种攻击比普通SQL注入更复杂,因为数据先被存储再提取。addslashes等函数的转义处理未能阻止注入,因为转义字符未入库,导致在数据检索后仍能形成恶意SQL。通过创建带特殊字符的用户账户并修改密码,可以展示这种攻击方式。
摘要由CSDN通过智能技术生成

概述

二次注入是指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入。
二次注入是sql注入的一种,但是比普通sql注入利用更加困难,利用门槛更高。普通注入数据直接进入到 SQL 查询中,而二次注入则是输入数据经处理后存储,取出后,再次进入到 SQL 查询。
原理

二次注入的原理,在第一次进行数据库插入数据的时候,使用了 addslashes 、get_magic_quotes_gpc、mysql_escape_string、mysql_real_escape_string等函数对其中的特殊字符进行了转义,但是addslashes有一个特点就是虽然参数在过滤后会添加 “\” 进行转义,但是“\”并不会插入到数据库中,在写入数据库的时候还是保留了原来的数据。在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次进行需要进行查询的时候,直接从数据库中取出了脏数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。
比如在第一次插入数据的时候,数据中带有单引号,直接插入到了数据库中;然后在下一次使用中在拼凑的过程中,就形成了二次注入
注入步骤

  • 第一步:插入恶意数据
    进行数据库插入数据时,对其中的特殊字符进行了转义处理,在写入数据库的时候又保留了原来的数据。
  • 第二步:引用恶意数据
    开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出恶意数据,没有进行进一步的检验的处理。

sql-labs只有less-24使用了该注入方法

 

测试正确输入,admin1  admin1

尝试对登录界面构造错误输入,对登陆界面进行测试,发现存在报错提示,但是没有报错信息

尝试对重置密码构造错误输入

创建一个恶意账户 用户名:admin1' #  123456

然后将该账户进行密码的修改

修改完成以后,就可以使用123456登录admin1账户

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值