⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 手工注入晋阶篇內部共享.txt

📁 常用网站入侵方法总结。详细而且使用.学习入侵必看
💻 TXT
📖 第 1 页 / 共 2 页
字号:
    B。字符型参数注入点分析

和刚才一样,我们先来看第二个字符型注入页面里的查询语句,比如是这个select * from 表 where id='ade7'(为什么加引号?看前面吧!)。原来的查询语句是这个样子的,如果我们还按照数字型参数的那种测试漏洞的方法的话,语句就会变成这样: select * from 表 where id='ade7 and 1=1'和
select * from 表 where id='ade7 and 1=2' ,因为程序会自动查询引号里的内容,如果我们按前面这两个语句这样提交的话,程序就会查询id值为ade7 and 1=1和ade7 and 1=2的记录,这样是查不到结果的(你可不要告诉我数据库里正好有两个记录的id就是ade7 and 1=1 和and 1=2)。这里可能有朋友要问了,为什么不是查询id为'ade7,然后and 1='1呢?好,我现在回答你们,就算可以查询id值为'ade7的记录,那这个句子也是错的,1怎么会等于'1呢?对吧?更何况程序是不可能查询 'ade7的,更准备的说是数据库中不可能有一个字段的值是'ade7,因为这个字符串少一个引号,如果直接把这个字符串存入数据库的话,程序会报错的!怎么样?明白了吧?

现在再说用 ' and '1'='1和' and '1'='2来测试的的原理!同样是这个查询语句:
select * from 表 where id='ade7',如果我们在网址后面加了' and '1'='1,那这个查询语句就会变成
select * from 表 where id='ade7' and '1'='1'(这里最外面的那一层引号是程序自动加上的),变成这个样子!这个语句对不对呢?我们分析一下。如果我们提交个语句,那程序就会自动查询 id值是ade7的记录!因为这个记录是存在的(不存在的话那就是这个网页有问题了!),然and后面跟的'1'='1'是正确的,所以这个语句是正确的!如果我们把' and '1'='1换成' and '1'='2,那语句就成了select * from 表 where id='ade7' and '1'='2',只看后面我们就可以知道这个语句对不对了!'1'怎么可能等于'2'呢?是吧?好了,字符型参数的注入点的原理就介绍到这里!

    2。数据库类型的判断

在确定了一个地址是注入点后,我们首先要判断这个注入点所连接的数据库的类型!这里介绍几种简单的方法。如果一种判断不出来就再换另一种判断方法!

    A。在注入点后直接加上单引号。有的时候我们可以根据服务器报错的信息来判断它用的是什么数据库。通过这个错误信息我们可以看出来这个注入点所连接的数据库的类型是ACCESS,为什么呢,仔细看!它说的是Microsoft JET Database Engine 錯誤 '80040e14' ,说明是通过JET引擎连接数据库,而不是ODBC!如果是用JET方法连接的话就说明用的是ACCESS数据库,如果是ODBC的话就说明数据库是 MSSQL!这个记住就行了。其实还有详细的错误信息,它直接把数据库的类型告诉你了!因为我没有找到这样的注入点,这里就截不了图了。大家遇的到话肯定一眼就可以看出来!

B。在注入点后加上(注意,你先确定了它是注入点后再加,不是注入点你加了也没用!): ;--(一个分号,两个横线!)比如这个网址
http://www.xxxxxxxx.com/article/as.asp?id=875,我们事先已经确定了它是注入点了, 这样的话我们就可以在后面加上;--让它变成
http://www.xxxxxxxx.com/article/as.asp?id=875;-- 提交这个网址,如果页面返回正常的话,说明数据库是MSSQL。因为在MSSQL数据库里,;和--都是存在的,";" 用来分离两个语句,而"--"就是注释符,在它后面的语句都不执行!而ACCESS数据库里没有!所以如果是ACCESS的数据库,当你在注入地址
后面加上";--"的话那程序就会把";--"当成参数的一部分,这样查询就会出错!如果错误,那基本上可以肯定是ACCESS了(因为网上用这两种数据库的网站最多!)

C。用以上方法都判断不出来的话,那可以用这一招!利用ACCESS和MSSQL数据库的差异来进行判断!要用到两个查询语句!同样,如果注入点是http://www.xxxxxxxx.com/article/as.asp?id=875,那我们在后面加上 and exists (select count(*) from sysobjects),那么地址就变成了
http://www.xxxxxxxx.com/article/as.asp?id=875 and exists (select count(*) from sysobjects)。如果页面正常返回,那就可以证明数据库是MSSQL的。我来解释一下这个语句:这个句子的意思是查询sysobjects表里的记录数大于0!(有点别扭!)如果返回正常,说明大于0,也就说明存在sysobjects这个表,因为这个表只有MSSQL数据库里才有,所以可以确定数据库的MSSQL的!如果返回错误,那就不是!那我们怎么用查询语句来判断数据库是不是ACCESS的呢!别急,往下看!我们在注入点后加上 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数据库了!!简单地来说就是两条查询语句:
and exists (select count(*) from sysobjects)
and exists (select count(*) from msysobjects)

    如果第一条返回正常,那就是MSSQL数据库,如果两条都不正常,那就是ACCESS数据库了(这里只讨论MSSQL和ACCESS)

    注意:上面讲的全是参数是int的时候的检测方法,如果参数是字符型的,那就先要在参数后面加上单引号,然后再在查询语句最后加上";--"

    3。猜表、字段名、检测记录数、检测字段长度。
我按照工具注入的流程给大家讲!

A。猜表!
用到的语句:and exists (select count(*) from 你要猜的表名) 。在注入点后加上这句话,如果返回正常,说明你猜的表是存在的!比如
http://www.xxxxxxxx.com/article/as.asp?id=875 and exists (select count(*) from admin),如果返回正常,说明admin这张表存在!如果返回错误,就说明不存在!。别的表也都是这么猜!

B。猜列!

用到的语句:and (select count(列名) from 猜到的表名)>0 。在注入点后加上这句话,如果返回正常,说明你猜的列是存在的!比如
http://www.xxxxxxxx.com/article/as.asp?id=875 and (select count(username) from admin)>0,如果返回正常,那username这个列就存在!不过首先要确定from后面跟的表名要是存在的哦!不然你怎么猜都是错的!

    C。检测记录数

用到的语句:and (select count(*) from 猜到的表名)>X (X是个数字)。在注入点后加上这句话,并不停地变换X这个数字,直到猜到准确的记录数为止!比如http://www.xxxxxxxx.com/article/as.asp?id=875 and (select count(*) from admin)>2 ,这个句子是猜admin表里有几条记录的,也就是有几个管理员(因为一个管理员对应一条记录嘛!)。如果返回正常,说明admin这张表里的记录数大于 2。这个时候我们把2改成别的大一点的数!比如5,如果返回错误,说明管理员的个数在2和5之间,2和5之间的整数是3和4,这个时候我们变换语句为http://www.xxxxxxxx.com/article/as.asp?id=875 and (select count(*) from admin)=3或者=4,哪个返回正常那管理员的个数就是哪个。如果提交>5还返回错误,那就再取一个更大的数,再重复刚才的动作就可以猜到记录数!

D。检测字段长度

用到的语句:and (select top 1 len(列) from 表)>X (X和刚才一样!)。我来解释一下这个句子,select top 1是查询第一条数据的意思!(在WEB环境下不支持多行回显!只是一次查询的数据不能超过一行!),len是MSSQL里的一个函数,用法是len(), ()里可以是字符串也可以是表达式也可以是列名!知道这些,大家应该可以看懂了吧!后面那个X的变换方法上面的一样!

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -