SQL注入实战:二阶注入

一、二阶注入的原理

1、二阶注入也称为SOL二次注入。

2、二次注入漏洞是一种在Web应用程序中广泛存在的安全漏洞形式:相对于一次注入漏洞而言,二次注入漏洞更难以被发现,但是它却具有与一次注入攻击漏洞相同的攻击威力。

3、简单的说,二次注入是指已存储(数据库、文件)的用户输入被读取后再次进入到 SOL查询语句中导致的注入。

4、网站对我们输入的一些重要的关键字进行了转义,但是这些我们构造的语句已经写进了数据库,可以在没有被转义的地方使用。

5、可能每一次注入都不构成漏洞,但是如果一起用就可能造成注入。

二、二阶注入与普通注入的区别

1、普通注入:

在http后面构造语句,是立即直接生效的

一次注入很容易被扫描工具扫描到

2、二次注入:

先构造语句(有被转义字符的语句)

我们构造的恶意语句存数据库

第二次构造语句(结合前面已经存入数据库的语句,成功。因为系统没有对已经存入数据库的数据做检查)

二次注入更加难以被发现

三、二阶注入的条件

1、用户向数据库插入恶意语句(即使后端代码对语句进行了转义,如mysql-escape_string、mysql_real_escape_string转义)

2、数据库对自己存储的数据非常放心,直接取出恶意数据给用户

四:二阶注入的步骤

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

第一步:插入恶意数据

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

数据。

第二步:引用恶意数据

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

行进一步的检验的处理。

五:二阶注入的代码分析

1、首先看注册的代码cat login_create.php

2、再来看修改密码的代码pass_change.php

如果修改的username是admin‘-- -那么实际上我们修改的是admin的password

也就是说我们注册了一个admin’-- -这样的一个用户,但修改可以修改admin的密码

六:二阶注入演示-sqli-labs less-24

第一步:注册一个admin’-- -,注意,后面这个-表示前面是一个注释,因为注释必须是空格才能生效

SQL注入实战:二阶注入_第1张图片

第二步:用admin‘-- -用户登入,修改admin’-- -密码

SQL注入实战:二阶注入_第2张图片

SQL注入实战:二阶注入_第3张图片

SQL注入实战:二阶注入_第4张图片 

修改完成后会发现admin‘-- -的密码还是123456(原因是单引号后面的注释掉了,修改的就是admiin的密码)

admin的密码变成了ssssss

这就是二阶注入的特点

理解是:首先注册一个恶意的用户,修改密码时是修改是本身用户密码,从而达到了注入效果

你可能感兴趣的:(sql,安全,web安全)