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

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

sqli-labs(24)的更多相关文章

  1. SQLI LABS Basic Part(1-22) WriteUp

    好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...

  2. Sqli labs系列-less-3 。。。

    原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...

  3. Sqli labs系列-less-2 详细篇

    就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...

  4. Sqli labs系列-less-1 详细篇

    要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...

  5. SQLI LABS Challenges Part(54-65) WriteUp

    终于到了最后一部分,这些关跟之前不同的是这里是限制次数的. less-54: 这题比较好玩,10次之内爆出数据.先试试是什么类型: ?id=1' and '1 ==>>正常 ?id=1' ...

  6. SQL注入系列:SQLi Labs

    前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...

  7. Sqli - Labs 靶场笔记(一)

    Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...

  8. SQLI LABS Stacked Part(38-53) WriteUp

    这里是堆叠注入部分 less-38: 这题啥过滤都没有,直接上: ?id=100' union select 1,2,'3 less-39: 同less-38: ?id=100 union selec ...

  9. SQLI LABS Advanced Part(23-37) WriteUp

    继续继续!这里是高级部分! less-23: 提示输入id参数,尝试: ?id=1' and '1 返回的结果与?id=1相同,所以可以直接利用了. ?id=1' order by 5# 可是页面返回 ...

  10. Sqli labs系列-less-5&6 报错注入法(下)

    我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...

随机推荐

  1. adb 设置安卓连接wifi

    一. 修改wpa_supplicant.conf文件 1.1. 获得root权限 adb root 1.2. 将wpa_supplicant.conf拷贝到你的电脑 adb pull /data/mi ...

  2. PostgreSQL-临时表空间与配置表

    虽然我给数据库创建了表空间,但是操作中仍遇到了些问题,需要创建临时表空间. 配置表 首先了解下 postgres 的配置表,手动修改各种配置. 打开即可看到各种配置,包括临时表空间. 临时表空间 1. ...

  3. npm学习(十)之如何使用创建、发布、使用作用域包

    前言 要求npm版本2或更高 作用域用于将相关包分组在一起,并为npm模块创建一个名称空间(类似于域).这里有更详细的解释. 如果一个包的名称以@开头,那么它就是一个有作用域的包.范围是@和斜杠之间的 ...

  4. String转int,int转String

    String转int 1) int i = Integer.parseInt([String]);  int i = Integer.parseInt([String],[int radix]); 2 ...

  5. ES6拷贝方法

    ES6 中对象拷贝方法: 方法一: Object.assign() // 对象浅拷贝, 复制所有可枚举属性 const obj1 = {a: 1}; const obj2 = {b: 2}; // c ...

  6. 关于echarts 重绘/图表切换/数据清空

    容器id 为main var myChart=document.getElementById("main") myChart.removeAttribute("_echa ...

  7. Windows 下apache https配置(phpstudy)

    1.首先获取证书,https://www.pianyissl.com/  免费三个月的 或者 自己生成私钥.证书,然后应用到apache中. http://blog.sina.com.cn/s/blo ...

  8. OOP三大核心封装继承多态

    OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用 ...

  9. Lambda学习总结(一)--函数式接口

    Lambda 表达式是 JDK 1.8 里面的一个重要更新,这意味着 Java 也开始承认了函数式编程,并且尝试引入其中,我们今天就来了解下它的使用. 一.函数式接口 1.1 概念 函数式接口在 Ja ...

  10. 【视频点播最佳实践】使用OSS SDK上传视频到点播

    摘要: 场景 点播上传SDK缺乏需要的语言版本(如C/C++.Go等)或相应的功能(如网络流上传.追加上传),可以直接使用OSS的SDK进行上传. 准备工作 确认已开通点播服务并完成了相关配置.确认已 ...