一、SQL注入原理

我以aspx为例,现在我们来研究下Cookie注入是怎么产生的,在获取URL参数的时候,如果在代码中写成Request[“id”],这样的写法问题就出现了。我先普及下科普知识,在aspx中Request.QueryString[“id”]用于接收get提交的数据,Request.Form[“id”]用于接收post提交的数据。如果不指定使用QueryString还是Form接收数据,WEB服务是怎样读取数据的呢,他是先取GET中的数据没有取到,再取POST中的数据如果还没有,在去取Cookies中的数据。这样Cookie注入就产生了。

二、测试环境

ASP.NET+SQL server

ASP.NET代码:

Aspx文件有两个。

Default,aspx页面代码

protected void page Load(object sender,EwentArgs e)

{

string id=Request{"id"}.ToString();

string connuser=@"Data Source=;lnitial

Catalog=CookieDemo;lntegrated Sccurity=True";

string xx=Server.UrlDecode(id);

steing sql="select*from Cookie where id="=xx

SqlConncction conn=new

SqlConnection(connuser);

conn Open();

Sqlcommand comm""new

Sqlcommand(sql,conn);

SqlDataReader datare=comm,ExecureReader();

while(datare.Read())

{

Response.Write(datare{"name"}

}

conn.Close();

}

Test页面代码

<body>

<form id = "forml"runat="server">

<div>

<a href="test.aspx?id=2">Cookie测试</a>

</div>

</form>

</body>

数据库:

数据库建库建表代码我就不写出来了,为了节省点版面。

三、实战演习

我们先访问Default.aspx。点击“Cookie测试”跳转到test.aspx?id=2页面,参数为id值为“2”,test.aspx页面中显示出了数据库中id为“2”相应的值。

现在我们把地址栏中的?id=2删除掉就成了,然后在浏览,出错了。

返回了错误页面什么数据也没有,这是必然的学过脚本语言的同学很容易理解这个问题,我们没有在浏览器传达id的值,所以Request在接收id的值的时候就什么也没有获取到。这样sql语句就会出现错误,必然会返错误页面,现在我们在把地址栏中的url删除掉,在地址栏输入“javascript:alert(document.cookie="id="+escape("3"));”浏览一下弹出个提示框。

现在我们在来访问一下这个不带参数的链接,就出来了id=3的相应的值。

为了方便不懂javascript的朋友我简单介绍下。

javascript:alert(document.cookie="id="+escape("3"));的意思,我说明一下document.cookie="id="+escape("3")就是把3保存到Cookies的id中。这样在过滤了Form,QueryString提交而没有过滤Cookie的时候,就能够Cookie注入了…基本原理就是这些了,现在实战操作下……

在地址栏输入“javascript:alert(document.cookie="id="+escape("3 and 1=1¨))”提交一下,然后在在刷新下页面出现了id=3的数据。然后在地址栏输入“javascript:alert(document.cookie="id="+escape("3 and l=2"))”浏览一下弹出现在在刷新下页面出现了空白页面。

两次返回不一样证明可以注入,我用Cookie注入演示怎么爆破出管理员账号密码,和常规的sql注入一样只不过是要用到Javascript,还是先判断字段然后在地址栏输入“javascript:alert(document.cookie="id="+escape("3 order by 2"))”提交以后刷新返回正常。

然后在地址栏输入“javascript:alert(document.cookie="id="+escape("3 0rder by 3"))”,返回错误。

确定字段数为2个javascript:alert(document.cookie="id="+escape("3 union select l,'2'"))。然后刷新就爆破出了数字2相应的位置。我自己搭建的环境测试,就不猜表了admin表是管理员表,表中有id,username,pass这3个字段,在真实的渗透中这些是需要自己去猜的。现在我们提交javascript:alert(document.cookie="id="+escape("3 union select 1,username from admin"))后刷新就爆破出了用户名。然后输入javascript:alert(document.cookie="id="+escape("3 union select 1,pass from admin"))刷新下页面密码就出来了。

账号密码都有了剩下的就是想办法后台拿Webshell了,由于我没有写后台测试页面,文章就到这了。这就是Cookie注入,希望对大家有帮助,SEE YOU。

菜鸟详细解析Cookie注入原理的更多相关文章

  1. cookie注入原理详解(一)

    那我们还是围绕以下几个问题来看看cookie注入: 1.什么是cookie注入? 2.为什么要cookie注入? 3.怎样cookie注入? 1.什么是cookie注入? ♦cookie注入的原理是: ...

  2. cookie注入原理

    cookie注入原理-->红客联盟 http://www.2cto.com/article/201202/118837.html 前言: document.cookie:表示当前浏览器中的coo ...

  3. cookie注入原理及注入检测

    通常我们的开发人员在开发过程中会特别注意到防止恶意用户进行恶意的注入操作,因此会对传入的参数进行适当的过滤,但是很多时候,由于个人对安全技术了解的不同,有些开发人员只会对get,post这种方式提交的 ...

  4. Web攻防系列教程之 Cookie注入攻防实战

    摘要:随着网络安全技术的发展,SQL注入作为一种很流行的攻击方式被越来越多的人所知晓.很多网站也都对SQL注入做了防护,许多网站管理员的做法就是添加一个防注入程序.这时我们用常规的手段去探测网站的SQ ...

  5. Cookie注入实战(非SQL注入)

    cookie注入原理其实很简单,就是利用了session机制中的特性,只能说是特性,不能算是漏洞. 这里简单的说下原理,session的机制就相当于你有一张蛋糕店的会员卡,这张会员卡就是你浏览器中的c ...

  6. Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解

    前段时间,在很多博客和微博中暴漏出了12306铁道部网站的一些漏洞,作为这么大的一个项目,要说有漏洞也不是没可能,但其漏洞确是一些菜鸟级程序员才会犯的错误.其实sql注入漏洞就是一个.作为一个菜鸟小程 ...

  7. cookie注入的形成,原理,利用总结

    一:cookie注入的形成 程序对提交数据获取方式是直接request("c.s.t")的方式.未指明使用request对象的具体方法进行获取. 二:原理 request(&quo ...

  8. C++多态的实现及原理详细解析

    C++多态的实现及原理详细解析 作者: 字体:[增加 减小] 类型:转载   C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型 ...

  9. jquery.cookie用法详细解析,封装的操作cookie的库有jquery.cookie.js

    jquery.cookie用法详细解析 需要注意存入cookie前,对数据进行序列化, 得到后在反序列化: 熟练运用:JSON.stringify();和JSON.parse(): 通常分为如下几个步 ...

随机推荐

  1. frame的用法

    <iframe> 标签规定一个内联框架.一个内联框架被用来在当前 HTML 文档中嵌入另一个文档. 所有的主流浏览器都支持<iframe>标签.你可以把提示的文字放到 < ...

  2. Fork别人的代码 原作者更新后如何同步

    给主题的fork加一个remote 给 fork 配置一个 remote 使用 git remote -v 查看远程状态 ➜ next git:(master) git remote -v origi ...

  3. Ubuntu18.04更换国内源(阿里,网易,中科大,清华等源)

    1.备份 备份/etc/apt/sources.list文件 mv /etc/apt/sources.list /etc/apt/sourses.list.backup 2.新建 新建/etc/apt ...

  4. 初学python之路-day01

    第一天学习python,先了解到了进制之间的转换关系. 如二进制与十进制的转换,如1111转成十进制为15,1111从左向右可看出2^3+2^2+2^1+2^0为8+4+2+1=15.记住前8位1的二 ...

  5. java----SAX解析XML

    XML: 可扩展标记语言 1.充当显示数据 2.储存数据 3.传输数据 SAX: 水电费 基于事假驱动,顺序读写,速度快 不能任意读取节点,灵活性差 解析时,占用内存小 import org.xml. ...

  6. java学习 之 操作符

    操作符介绍 java语言操作符 1.赋值操作符  = 2.计算操作符   + .- (减.负号).*(乘)./(除) 3.递增递减     --(递减).++(递增) 4.关系操作符    ==.!= ...

  7. 分享一个学习的网站:每天会有大量AI相关的干货(论文分享,行业动态,相关竞赛经验分享等)http://www.deepsmart.ai/

    网址:http://www.deepsmart.ai/ 微信公众号如下:

  8. 一 .isinstance(obj,cls)和issubclass(sub,super)

    class Foo: pass class Bar(Foo): pass obj = Bar() isinstance(obj,cls)检查是否obj是否是类 cls 的对象 print(isinst ...

  9. C语言fread/fwrite填坑记

    坑的描述 用fwrite把数据写入文件,再用fread读取,发现后半部分的数据可能是错的. 原因:原本要写入文件的数据中,有0x0A,如果用的是文本模式打开的文件流,在windows下0x0A会被转换 ...

  10. Pylon5 SDK搭配OpenCV使用入门

    本文假设已经安装了Basler官网提供的Pylon 目前最新的版本是5.0.5,如果上述链接打不开,请直接所有Basler官网下载,需要注意的是在安装Pylon5时要选择Developer模式,这样才 ...