二阶SQL注入简述
所谓二阶注入是指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入。
二阶注入也是SQL注入的一种,与我们平时接触最多的一阶SQL注入相比利用门槛更高。普通的一阶SQL注入数据直接就进入到SQL查询中,而二阶SQL注入则是输入数据经处理后存储,然后取出数据,最后才进入到SQL查询。
事实上你在网上搜索到的SQL注入文章,大部分都可以归结为一阶SQL注入,因为这些例子涉及的事件均发生在单个HTTP请求和响应中,如下所示:
· 攻击者在HTTP请求中提交某种经过构思的输入。
· 应用处理输入,导致攻击者注入的SQL查询被执行。
· 如果可行的话,会直接向攻击者返回查询结果。
二阶注入的流程如下:PHP大马
· 攻击者在HTTP请求中提交某种经过构思的输入。
· 应用存储该输入(通常保存在数据库中)以便后面使用并响应请求。
· 攻击者提交第二个(不同的)请求。
· 为处理第二个请求,应用会检索已经存储的输入并处理它,从而导致攻击者注入的SQL查询被执行。
· 如果可行的话,会在应用对第二个请求的响应中向攻击者返回查询结果。