二阶注入

原文转载于:http://blog.sina.com.cn/s/blog_8ff08f3001019wif.html

还有一篇蛮科普原理性的文章:http://book.51cto.com/art/201006/207598.htm

PS:我的理解是,第一次注入数据库的时候使用了特殊符号没有起到SQL注入攻击的效果,但是在程序第二次调用的时候又会导致注入,这类注入叫做二阶注入!

米哥的理解是:插入的数据中中带有数据库内置识别符号,下一次更新数据时候导致数据库识别出错并执行。

好像米哥的理解更加的有技术性一些。俺对技术还是了解的不够透彻。

second-order sql injection

也算是一种特别有益的绕过过滤的一种方法

当用户输入的恶意数据首次传送给数据库时

将会进行安全的处理

但当应用程序调用时将会以一种危险的方式运行

举例:

搜索时如若我们搜索:bingdao‘

在没有进行安全处理的应用程序中将会报错

反之

数据库将会进行如下的操作:

SELECT author,title from books where name=‘bingdao‘‘‘;

成功的进行查询

这是由于应用程序安全的将‘转义为‘‘

达到安全的目的

但如若我们是在注册用户时这样运行那么将是这样:

INSERT into users(username,password,id,privs) values(‘bingdao‘ ‘‘ ,‘fuckyou‘, 1, 1);

成功的注册 并且用户名为bingdao‘

目前为止一切正常

假如我们再去修改密码

修改密码时会验证原密码

于是数据库就这样查询:

SELECT password from users where username=‘bingdao‘‘;

只有在传入数据到数据库时才会进行安全的转义(猜想的一种情景)

这样数据库就会报错

那么我们就利用这个漏洞吧

‘ or 1 in (select password from users where username=‘admin‘)--

这样当我们再次修改密码时就会将admin的密码返回出来!

但本技巧理论性较强

我也尚未实验过

大家随意看看

THE END


时间: 2024-10-20 20:31:09

二阶注入的相关文章

SQL注入攻与防之代码层防御SQL注入

[目录] 0x0 前言 0x1 领域驱动的安全 1.1 领域驱动的设计 1.2 领域驱动的安全示例 0x2 使用参数化查询 2.1 参数化查询 2.2 Java中的参数化语句 2.3 .NET(C#)中的参数化语句 2.4 PHP中的参数化语句 2.5 PL/SQL中的参数化语句 0X3 移动应用中的参数化语句 3.1 iOS应用程序中的参数化语句 3.2 Android应用程序中的参数化语句 3.3 HTML浏览器中存储的参数化语句 0x4 输入验证 4.1 白名单 4.2 黑名单 4.3 J

防御sql注入

1. 领域驱动安全 领域驱动安全是一种代码设计方法.其思想是将一个隐式的概念转化为显示,个人认为即是面向对象的方法,将一个概念抽象成一个类,在该类中通过方法对类的属性进行约束.是否是字符串,包含什么字母等.对原始的字符串进行封装. 好处是只需要对类做单元测试,并且保证在代码中需要用到该隐式概念时都创建这个类来进行处理.最重要的是将输入数据固定位数据.就使用参数化语句进行预处理.参数化语句是将sql语句中的参数用占位符替代,在数据库完成编译工作只签参数的时候,程序再调用相应接口将参数传递给数据库.

MYSQL注入天书之基础知识

第一部分/page-1 Basic Challenges Background-1 基础知识 此处介绍一些mysql注入的一些基础知识. (1)注入的分类---仁者见仁,智者见智. 下面这个是阿德玛表哥的一段话,个人认为分类已经是够全面了.理解不了跳过,当你完全看完整个学习过程后再回头看这段.能完全理解下面的这些每个分类,对每个分类有属于你的认知和了解的时候,你就算是小有成就了,当然仅仅是sql注入上. 基于从服务器接收到的响应? ▲基于错误的SQL注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL

DDOS、CC、sql注入,跨站攻击防御方法

web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 http://nic.swu.edu.cn/s/nic/thyt/20180604/2555404.html 1.1 DDos介绍 DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”.分布式拒绝服务攻击发起后,攻击网络包就会从很多DOS攻击源(俗称

SQL注入是什么?如何防止?

SQL注入是一种注入攻击,可以执行恶意SQL语句.下面本篇文章就来带大家了解一下SQL注入,简单介绍一下防止SQL注入攻击的方法,希望对大家有所帮助. 什么是SQL注入? SQL注入(SQLi)是一种注入攻击,,可以执行恶意SQL语句.它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器.攻击者可以使用SQL注入漏洞绕过应用程序安全措施:可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容:还可以使用SQL注入来添加,修改和删除数据库中

sqli-labs(24)

0x1 前言 SQL注入一般分为两类:一阶SQL注入(普通SQL注入),二阶SQL注入 .二次注入不是注入两次的意思,请不要混淆 0x2 什么是二阶注入 二阶注入是指客通过构造数据的形式,在浏览器或者其他软件中提交HTTP数据报文请求到服务端进行处理,提交的数据报文请求中可能包含了黑客构造的SQL语句或者命令信息.虽然参数在过滤后会添加 “\” 进行转义,但是“\”并不会插入到数据库中,这样就可以利用这个构造一个二次注入. 二阶注入也称为存储型的注入,就是将可能导致SQL注入的字符先存入到数据库

sqlilabs23-28a关

空格替代: %09:tab(水平) %0a:新建一行 %0c:新建一页 %0d:return %0b:tab(垂直) %a0:空格 /**/:代替空格 less-23操作过程 1.做23关的时候,发现各种注释符都被过滤了,那么我们可以怎么绕过注释符来进行操作呢,首先通过报错,来获取到他的闭合方式 2.了解到闭合方式之后,我们就可以利用‘or (1)or ‘ 的方式,绕过使用注释符,完整的sql为 select * from users where id = ’‘ or (1) or ’‘ lim

sqli-labs的搭建

一.SQLi-Labs是什么? SQLi-Labs是一个专业的SQL注入练习平台,适用于GET和POST场景,包含了以下注入: 1.基于错误的注入(Union Select) 字符串 整数 2.基于误差的注入(双查询注入) 3.盲注入(01.基于Boolian数据类型注入, 02.基于时间注入) 4.更新查询注入(update ) 5.插入查询注入(insert ) 6.Header头部注入(01.基于Referer注入, 02.基于UserAgent注入,03.基于cookie注入) 7.二阶

二阶SQL注入理解与体会

一:SQL注入分类 SQL注入一般分为两类:一阶SQL注入(普通SQL注入),二阶SQL注入 二:二者进行比较 0x01:一阶SQL注入: 1:一阶SQL注入发生在一个HTTP请求和响应中,对系统的攻击是立即执行的: 2:攻击者在http请求中提交非法输入: 3:应用程序处理非法输入,使用非法输入构造SQL语句: 4:在攻击过程中向攻击者返回结果. 0x02:二阶SQL注入: 1:攻击者在http请求中提交恶意输入: 2:恶意输入保存在数据库中: 3:攻击者提交第二次http请求: 4:为处理第