SQL注入
原理:用户输入的数据被当做SQL语句执行
案例:
MySQL建立数据库admin,库中有表user,四个字段,分别是id,username,password,email
插入三条记录
构造登录界面
login.html
MySQL处理流程 login.php
读者可自行尝试验证SQL注入漏洞,后面记录下二次注入
一阶注入(案例在上面):
一阶SQL注入发生在一次HTTP请求和响应中,即攻击者发送恶意请求后服务器立即接收该请求并作出响应,例如在参数?id=1后面添加单引号可能有报错提示。
二阶注入(二次注入):
二阶注入会发生在两次HTTP请求和响应中,攻击者提交恶意数据并使其存储在数据库中,攻击者利用web应用检索存储在数据库中的恶意数据,造成二次注入。
构造注册页面
reg.html
MySQL处理流程
reg.php
构造检索界面
search.html
MySQL处理流程
二次注入验证:
注册一个账号,使其用户名为’ union select * from 1,2,database(),4#
数据库中存储的恶意数据
检索
拼接成SQL语句为