0x1 前言

  SQL注入一般分为两类:一阶SQL注入(普通SQL注入),二阶SQL注入 。二次注入不是注入两次的意思,请不要混淆

0x2 什么是二阶注入

  二阶注入是指客通过构造数据的形式,在浏览器或者其他软件中提交HTTP数据报文请求到服务端进行处理,提交的数据报文请求中可能包含了黑客构造的SQL语句或者命令信息。虽然参数在过滤后会添加 “\” 进行转义,但是“\”并不会插入到数据库中,这样就可以利用这个构造一个二次注入。

  二阶注入也称为存储型的注入,就是将可能导致SQL注入的字符先存入到数据库中,当再次调用这个恶意构造的字符时,就可以出发SQL注入二次排序注入思

0x3一阶注入和二阶注入区别

一阶注入原理

  (1)一阶SQL注入发生在一个HTTP请求和响应中,对系统的攻击是立即执行的;

  (2)攻击者在http请求中提交非法输入;

  (3)应用程序处理非法输入,使用非法输入构造SQL语句;

  (4)在攻击过程中向攻击者返回结果。

二阶注入原理:

  (1)攻击者在http请求中提交恶意输入;

  (2)恶意输入保存在数据库中;

  (3)攻击者提交第二次http请求;

  (4)为处理第二次http请求,程序在检索存储在数据库中的恶意输入,构造SQL语句;

  (5)如果攻击成功,在第二次请求响应中返回结果。

0X04源码分析

a很明显 在login的时候不能产生注入

那我们看看在创建新用户这里呢 一样进行了过滤

再来看看我们的修改密码的页面呐  诶 好像没有过滤诶

0X05注入开始

1 先创建一个含有注释符的用户 amin'#

(2)看下数据库,成功添加了记录(有人会有疑问,不是单引号进行了转义了吗,是的,虽然转义了,但数据存入数据库中还是单引号,转义只不过是暂时的)

3)从上图中可以看出管理员的密码为admin, 我们现在来进行修改 先解释下源码中的sql语句

  原SQL语句:UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass'

  修改密码sql语句:UPDATE users SET PASSWORD='$pass' where username='admin'#' and password='$curr_pass'

  最后真正执行的sql语句:UPDATE users SET PASSWORD='$pass' where username='admin'

(4)好吧,开始吧,我们利用注册的账户admin'#进行登录,再进到修改密码界面,将123456密码改为000000

切记 学习之路 少就是多 慢就是快

最新文章

  1. JavaScript String对象
  2. CentOS系统yum源使用报错:Error: Cannot retrieve repository metadata (repomd.xml) for repository: rpmforge.
  3. C#中的Mutex对象认识
  4. Temporary Segments: What Happens When a Sort Occurs (文档 ID 102339.1)
  5. 五、SQL映射的XML文件
  6. 有关collection中的一些数据结构
  7. 用js判断一个复选框是否被选中
  8. cocos2dx CCControlSlider
  9. Delegate,Action,Func,Predicate的使用与区别
  10. sql proc触发异常处理回滚
  11. 006.Adding a controller to a ASP.NET Core MVC app with Visual Studio -- 【在asp.net core mvc 中添加一个控制器】
  12. C# DateDateTimePicker设置属性ShowCheckBox为True
  13. Grafana最新版本4.3.1安装(后端使用mysql)
  14. 传统方法过渡到ES6去优雅地实现JavaScript的继承
  15. Java集合详解5:深入理解LinkedHashMap和LRU缓存
  16. 20190317 A
  17. laravel 更新验证
  18. Javascript高级编程学习笔记(8)—— 变量
  19. Unity查找子物体的方式-怎么查找GameObject
  20. 2. select下拉框获取选中的值

热门文章

  1. GITFLOW流程
  2. HDU-5201 The Monkey King
  3. CSP-S 2019游记
  4. AppCan适配问题
  5. redis 有序集合
  6. 解决IOS把数字渲染为电话号码,颜色为蓝色解决方案
  7. Codeforces 1215D. Ticket Game
  8. MySQL数据库入门多实例配置
  9. kafka复习(1)
  10. 初探 -1 JavaScript