ASP防注入新方式,希望对大家是有用的

最近我的网站经常把js脚本注入到数据,清除了又来。先后在网上找了很多的方法,还是没有用的,十分恼火。

首先先告诉大家一个批量清除代码的sql语句。

update 表名 set 字段=replace(字段,’script src=http://3b3.org/c.js>
1、分析那些无聊的人,或者有些病态的人究竟做了些什么 。

通过iis的日志或者microsoft urlscan 日志查看,在一些通过id查询数据库内容的时候后面被人加了一段很长的字符窜。

%%3B%%44%%65%%43%%4C%%61%%52%%45%%类似这样的字符窜,一定是其他的方式编码

首先我们先用工具分析下如此之长的字符窜究竟包含了些什么内容。

通过批量替换工具把%%全部替换成空,然后把得到的字符串通过其他的转码工具,转成字符窜。

;DeCLaRE @S NvArCHaR(4000);SeT @S=CaSt(0×45这里代码去掉了06F007200 aS NvArChAR(4000));ExEc(@S);–

就是一段与通过id查询数据库同时执行的sql,就给数据库某些表的字段加入了js病毒连接。

2、所以我们的原来的防sql注入的字符串就需要升级了。

如果过滤16进制

; 对应 3B

DeCLaRE 对应 4465434C615245

@ 对应 40

NvArCHaR 对应 4E76417243486152

set 对应 536554

CaSt 对应 43615374

as 对应 6153

exec 对应 45784563

- 对应 2D

把16进制的代码用|隔开放到injdata 里面

injdata = “3B|2D|’|;|and|exec|insert|select|delete%20from|update|count|”

然后自己测试下,程序是否拦击了这些16进制的代码,本人测试过是可以拦击的,如果不加入这些是不拦击的

照样可以注入到数据库。

标签Tags:, , , , , , , , , , , , , , , ,

相关日志

通过注册表彻底删除guest等账户

开始——运行regedt  启动注册表编辑器
找到HKEY_LOCAL_MACHINE窗口,选中SAM\SAM,然后点菜单中的权限设置,这时候我们可看到Administrators组只具有特殊权限,而SYSTEM账号却拥有全部控制权限,想一想这是为什么呢?其实很容易理解,SYSTEM账号是系统启动时候需要的账号,很多系统内核程序和服务程序大都是以该账号的权限运行的,若权限太低的话,恐怕我们的系统就运行不了!现在我们需要做的是更改Administrators权限(一定要在高级选项中记住该权限内容以备后用)为全部控制,这样我们就可以访问SAM下的信息了。
再次运行regedit:
此时HKEY_LOCAL_MACHINE\SAM\SAM下就有东西了,步步深入一直找到:
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F5 和 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\Guest
删除000001F5和Guest,然后退出regedit,再次运行regedt32,恢复Administrators对sam的权限(还记得Administrators的特殊权限吗?一定要记得啊,实在没有记住的话找其它同系统的机器看看也行,是一样的),这样是为了安全考虑,防止用户不小心删除系统账号。
进入dos窗口:
>net user
看看,会看大guest不见了,同样使用系统管理器的用户和组查看也是没有的了。这样就大功搞成了!
========
需要提醒的是:
1、不熟悉注册表编辑的一定不要乱来,否则可能导致系统崩溃。
2、删除前可考虑通过注册表的导出功能对删除的部分进行备份,以便恢复。 深入去玩的方法是:
可通过编辑注册表的SAM信息可轻松删除或改动其它账
2、可编写程序以SYSTEM权限运行来访问注册表中的SAM信息实现删除guest。

标签Tags:, , , , ,

相关日志

Webshell下破解计算机管理员密码

软件作者:taiwansee
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)

这个idea源自以前学runas命令时候的启发。

使用方法:
    1、把你的密码字典改名成psw.txt后,上传到目标服务器的一个可执行、可写的目录中。这里假设这个目录是:c:\windows\temp\
    2、把程序上传到c:\windows\temp\中,然后运行它。
    3、然后就是等待,过几分钟(具体时间看你的字典大小了)查阅c:\windows\temp\下的result_.txt中的结果,
       如果为空就说明还没破解完,另选时间再回来看。

特点:
    不需要抓hash,不需要管理员权限,ISUR_*用户就能用,速度慢(这个也是特点哦)在测试机中的表现是每秒尝试1800个密码左右。
    默认破解administrator用户的密码。要破其它,请自行修改代码。
(全文…)

标签Tags:, , , , , , , , , , , , , , , , , , , , ,

相关日志

最令PHP初学者头痛的十四个问题

(全文…)

标签Tags:, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

相关日志

PHP和Socket简介

Sockets在PHP中是没有充分利用的功能。今天你将看到产生一个能使用客户端连接的服务器,并在客户端使用socket进行连接,服务器端将详细的处理信息发送给客户端。

当你看到完整的socket过程,那么你将会在以后的程序开发中使用它。这个服务器是一个能让你连接的HTTP服务器,客户端是一个Web浏览器,这是一个单一的 客户端/服务器 的关系。 (全文…)

标签Tags:, , , , , , , , , , , , , , , , , , , , , , , , ,

相关日志

深入探讨PHP中的内存管理问题

一、 内存

  在PHP中,填充一个字符串变量相当简单,这只需要一个语句”"即可,并且该字符串能够被自由地修改、拷贝和移动。而在C语言中,尽管你能够编写例如”char *str = “hello world “;”这样的一个简单的静态字符串;但是,却不能修改该字符串,因为它生存于程序空间内。为了创建一个可操纵的字符串,你必须分配一个内存块,并且通过一个函数(例如strdup())来复制其内容。

以下为引用的内容:

  {

  char *str;

  str = strdup(“hello world”);

  if (!str) {

  fprintf(stderr, “Unable to allocate memory!”);

  }

  }

  由于后面我们将分析的各种原因,传统型内存管理函数(例如malloc(),free(),strdup(),realloc(),calloc(),等等)几乎都不能直接为PHP源代码所使用。 (全文…)

标签Tags:, , , , , , , , , , , , , , , , , , ,

相关日志

PHP对文本数据库的基本操作方法

PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法
我用一个留言本程序作为例子,阐述PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法。
此文本数据库共有字段10个:客户IP、发言时间、客户名、客户EMAIL、客户主页地址、留言表情图片名、客户QQ、客户形象图片、留言内容、管理员回复内容。

1、加入数据程序段。

$date=date(“Y-m-d H:i:s”);//取得系统时间
$ip = $HTTP_SERVER_VARS[REMOTE_ADDR]; //取得发言的IP地址
$text=encode($gb_text);//去掉留言内容后面的空格.
$fp=fopen(“gb.dat”,”a”);//以只写模式打开gb.dat文本文件,文件指针指向文件尾部.
$str=$ip.” ”.$date.” ”.$gb_name.” ”.$gb_email.” ”.$gb_home.” ”.$face.” ”.$gb_qq.” ”.$head.” ”.$text.” ”.$reply.”\n”;//将所有留言的数据赋予变量$str,” ”的目的是用来今后作数据分割时的数据间隔符号。
fwrite($fp,$str);//将数据写入文件
fclose($fp);//关闭文件
showmessage(“留言成功!”,”index.php”,”3″);//留言成功,3秒后自动返回主界面。
其中的$gb_name 、$gb_email、$gb_home、$face、$gb_qq、$head、$gb_text、$reply是由发言表单传过来的数据。
(全文…)

标签Tags:, , , , , , , , , , , , , , , , , , ,

相关日志

require和include的异同

第一点:require() 和 include() 除了怎样处理失败之外在各方面都完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说,如果你想在丢失文件时停止处理页面,那就用require() 吧,它直接会中止脚本。而include() 就不是这样,脚本会继续运行,但是会抛出一个Notice级别的错误。同时也要确认设置了合适的include_path。

就是说再解析程序时即读取require的文件,而不是解析后,如果不能读取到被require的文件,就不能进行下一步动作。所以,不被正确包含就会导致程序的文件,用require比较好。

第二点:require() 无论如何都会包含文件,而 include() 可以有选择地包含:
<!–p  if(FALSE){  require(‘a.php’);  }  if(FALSE){  include(‘b.php’);  } –>

比如上面这段代码,a.php一定会被包含,而b.php一定不会被包含。require类似于一次预扫描,在程序执行时,无论在函数里或是函数外,都将先把require的文件执行,且只执行一次。而include则是每执行一次就调用一次文件,即这次执行后,下次再执行执行到这里,仍将再执行一次。大家应该明白这个区别了吧:)

同时可以看下require_once和include_once的区别。
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。
include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。如同此语句名字暗示的那样,只会包括一次。

第一点:require() 和 include() 除了怎样处理失败之外在各方面都完全一样。include() 产生一个警告而 require() 则导致一个致命错误。换句话说,如果你想在丢失文件时停止处理页面,那就用require() 吧,它直接会中止脚本。而include() 就不是这样,脚本会继续运行,但是会抛出一个Notice级别的错误。同时也要确认设置了合适的include_path。

就是说再解析程序时即读取require的文件,而不是解析后,如果不能读取到被require的文件,就不能进行下一步动作。所以,不被正确包含就会导致程序的文件,用require比较好。

第二点:require() 无论如何都会包含文件,而 include() 可以有选择地包含:
<!–p  if(FALSE){  require(‘a.php’);  }  if(FALSE){  include(‘b.php’);  } –>

比如上面这段代码,a.php一定会被包含,而b.php一定不会被包含。require类似于一次预扫描,在程序执行时,无论在函数里或是函数外,都将先把require的文件执行,且只执行一次。而include则是每执行一次就调用一次文件,即这次执行后,下次再执行执行到这里,仍将再执行一次。大家应该明白这个区别了吧:)

同时可以看下require_once和include_once的区别。
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。
include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。如同此语句名字暗示的那样,只会包括一次。

标签Tags:, , , , , , , , , , , ,

相关日志

AJAX应用程序开发七宗罪

AJAX bandwagon是个好去处。它带给你更快、更高效、更强动态的应用。但它也有自身的缺陷。

初一看,具备一些常识似乎就能避免这些缺陷,在一定程度上,的确如此。但从DHTML起源来看,AJAX应用程序充满了结构性差异。不论你在应用程序开发工作中掌握了多少常识,从别人犯的错误中吸取教训也是有好处的。我们称这些错误为“七宗死罪”,但它们不能代表全部的错误。

事实上,在你犯这些致命过失之前,你可能首先犯了一些较轻的错误。因此我们从这里着手。这是每个人都可能犯的错误。这些错误是多么普遍,通过Google搜索一下,你就可以发现大部分的错误。
(全文…)

标签Tags:, , , , , , , , , , , , , , , , , , , , ,

相关日志

Ajax的工作原理

Ajax的核心是JavaScript对象 XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。

  在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能:

* 动态更新购物车的物品总数,无需用户单击Update并等待服务器重新发送整个页面。
* 提升站点的性能,这是通过减少从服务器下载的数据量而实现的。例如,在Amazon的购物车页面,当更新篮子中的一项物品的数量时,会重新载入整个页面,这必须下载32K的数据。如果使用Ajax计算新的总量,服务器只会返回新的总量值,因此所需的带宽仅为原来的百分之一。
* 消除了每次用户输入时的页面刷新。例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。
* 直接编辑表格数据,而不是要求用户导航到新的页面来编辑数据。对于Ajax,当用户单击Edit时,可以将静态表格刷新为内容可编辑的表格。用户单击Done之后,就可以发出一个Ajax请求来更新服务器,并刷新表格,使其包含静态、只读的数据。
  一切皆有可能!但愿它能够激发您开始开发自己的基于Ajax的站点。然而,在开始之前,让我们介绍一个现有的Web站点,它遵循传统的提交/等待/重新显示的范例,我们还将讨论Ajax如何提升用户体验。 (全文…)

标签Tags:, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

相关日志

当前 1 / 3 页123