您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页手工注入入门一

手工注入入门一

来源:化拓教育网

要想学会手工注入,有一个名词是不得不提的,那就是数据库系统
  1。简介
  数据库系统分为数据库数据库管理系统!数据库是存放数据的地方,数据库管理系统则是管理数据库的软件!数据库中数据的存储节构叫数据模型!有四种常 见的数据模型,分别是层次模型、网状模型、关系模型和面向对象模型。其中关系数据模型是最主要的数据模型,ACCESS、MSSQL、ORACLE等都是 关系模型数据库系统。其中以ACCESS、MSSQL数据库系统最为常见!这些都是理论的知识,希望大家理解。
  2。基本概念
  表:表是一个关系数据库的基本组成元素!它按行与列组合排列成相关信息。通常行称为记录,列称为域。每个域称为一个字段!每一条记录都由多个字段组成。每个字段的名字叫做字段名,每个字段的值叫估字段值。表中的每一行即每一条记录都拥有想同的结构。
  3。注入的条件
  只有调用数据库的动态页面才有可有存在注入漏洞,动态页面包括asp php jsp cgi等。本文只讲对asp页面的注入。那什么是调用数据库的页面呢?比如这样的形势:
  asp?id= php?id= 这样的样子的都是调用数据库的页面。"?"后面加的id的名字叫变量,注意这个变量是可以随便换的,"="号后面的值名字叫参数!这个参数也是可以变的!大家的思路一定要灵活,要学会举一反三,不要太死板。
  4。注入漏洞的原理分析:
  程序对用户提交的变量没有进行有效的过滤,就直接带入查询语句中,这样,我们就可以提交具有数据查询功能的语句,加入到程序将要提交的信息中去,再根据服务器返回的信息来判断数据库里的内容!光这样说大家可能不太好理解,不要紧,接着往下看。
  有关的基础已经讲完了 下面开始实战练习部分。
  实战部分
  如果是刚刚接触注入的新手朋友,我们要做的第一步就是,用鼠标右键点击桌面上的IE图标,再点属性,然后再点“高级”,然后往下拉滚动条,找到“显示
  友好HTTP错误信息”,把前面的勾去掉,再点“确定”,这样做是为了让我们得到更多的服务器返回的信息。
  第一部分:ACCESS数据库手工注入
  1。判断是否存在注入漏洞:
  这个相信大家都应该知道! 就是在一个调用数据库的网址后面加上分别加上and 1=1and 1=2,如果加入and 1=1返回正常(就是和原来没有加and 1=1时页面样子的一样),而加入and 1=2返回错误(和原来没有加 and 1=2时页面的样子不一样),就可以证明这个页面存在注入漏洞。比如:
  http://www.xxx.com/a.asp?id=7,这个网页,我们在后面加上 and 1=1(两个空格,and前面一个,and和1=1之间一个!),网址就变成了
  http://www.xxx.com/a.asp?id=7 and 1=1返回正常!再尝试在后面加上and 1=2,网址就变成了
  http://www.xxx.com/a.asp?id=7 and 1=2返回错误!这就说明这个网页http://www.xxx.com/a.asp?id=7存在注入漏洞,是一个注入点!(存在注入漏洞的网页叫注入点!)可是,并不是所有的页面都可以这样判断,有的页面不管你加入 and 1=1 还是 and 1=2,返回的都是错误的页面,难道这样的页面就没有注入漏洞吗?不一定!比如这个页面:http://www.xxxxxx.com/b.asp?id=ade7, 不管我们在后面上的是and 1=1还是and 1=2,它都返回错误的页面!这个时候我们就要尝试用另一种方法来测试漏洞了,这种方法可以说是and 1=1和and 1=2的变种方法。原来的网址是这样的:http://www.xxxxxx.com/b.asp?id=ade7

我们在注入点后加上and exists (select count(*) from msysobjects)。就成了http://www.xxxxxxxx.com/article/as.asp?id=875 and exists (select count(*) from msysobjects),按刚才理解MSSQL数据库的方法去理解这条语句!这里要注意,提交这个语句是不会返回正常页面的!就算是ACCESS数据库也不会返回正常的页面!因为默认情况下,我们是没有权限查询这个表里的数据的!不过WEB会提示我们 “记录无法读取;'msysobjects'没有读取权限”!如果返回的是这个错误信息的话,那就证明是ACCESS数据库了!如图3!简单地来说就是两 条查询语句:
  and exists (select count(*) from sysobjects)        页面正常返回,那就可以证明数据库是MSSQL的
  and exists (select count(*) from msysobjects)     提示我们 “记录无法读取;'msysobjects'没有读取权限”!那就证明是ACCESS数据库
  如果第一条返回正常,那就是MSSQL数据库,如果两条都不正常,那就是ACCESS数据库了(这里只讨论MSSQL和ACCESS)
  注意:上面讲的全是参数是int的时候的检测方法,如果参数是字符型的,那就先要在参数后面加上单引号,然后再在查询语句最后加上";--"

转载于:https://www.cnblogs.com/amwld/archive/2011/05/27/2059441.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务