二次注入
原理
二次注入也叫二阶注入,二次注入就是由于将数据存储进数据库(或文件)中时未做好过滤,先提交构造好的特殊字符(单引号、空格等)请求存储进数据库,然后已储存进数据库中的特殊字符被再次提交到请求存储进数据库到sql语句中,导致了一条新的sql语句被执行。
攻击者通过构造数据的形式,在浏览器或者其他软件中提交HTTP数据报文请求到服务器端进行处理,提交的数据报文请求中可能包含了攻击者构造的sql语句或者命令;
服务器端应用程序会将攻击者提交的数据信息进行存储,通常是保存在数据库中,保存的数据信息的主要作用是为应用程序执行其他功能提供原始输入数据并对客户端请求做出响应;
攻击者向服务端发送第二个与第一次不同的请求数据信息;
服务器端接收到攻击者提交的第二个请求信息后,为了处理该请求,服务端会查询数据库中已经储存的数据信息并处理,从而导致攻击者在第一次请求中构造的sql语句或者命令在服务端环境中执行;
服务端返回执行的处理结果数据信息,攻击者可以通过返回的结果数据信息判断二次注入漏洞使用是否成功。
靶场环境:
sqli-labs-24