|
来源:http://www.hackblog.com/more.asp?name=lsaint
& _; `. m! s A3 t& x 现在大部分html页面是动态页面放入了html模版而形成的静态页面,我们的攻击思路也就明确了,就是从这些静态页面里找出动态页面的地址,在找出注入点,我们需要的工具是sniffer。
0 b1 ?: h8 G& U* P% S$ C9 X
3 z2 g8 [7 M& c; q4 n访问这个 IP ,返回"No web site is configured at this address.",初步判断是虚拟主机
; M f3 D9 X0 D5 Y! L! i先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" , 直接跳转目录。 看到了,马上修改 ServUDaemon.ini文件 8 L9 g y r ^) e
6 e3 n; _8 d! H
view-source:查看web代码
7 s6 L$ \/ @: c8 P, X总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入
# t' | N8 v+ e1 ^( ?2 E/ E% j, g( ]and 1=(select @@VERSION) 这个是SQL判断版本号的语句 1'or'1'='1
" n* }$ Z$ ?3 M$ z; h# H0 g* s& U1'or'1=1 T* t9 y" ]: P0 M) X9 N
'or'='or' 4 U' y+ y* k& V
& p3 }7 ?- {7 a6 K% u: Eselect语句在判断查询条件时,遇到或(or)操作就会忽略下面的与(and)操作 - E: x) O' `/ W% ~
sql="select * from admin where username="&user&" and password="&pwd&""
7 M! P8 e4 N' }* G ?9 asql="select * from admin where username='111'or'1=1' and password='pass'
1 Y9 I9 ]. f. I: tsql="select * from admin where username='1'or'1'='1' and password='pass' 5 ^5 E9 |$ u0 e2 u. O1 `4 H
$ y" v5 ~3 w! R2 ]. D
开始菜单->运行->iexpress(输入运行这个命令)& R B6 m5 b& U( m) U
然后呢就自己配置吧 其实就是利用系统自带的CAB打包压缩功能~
- P' l4 F$ q" {) i) h& X' X7 i只要你合并的文件不被杀合并器就不会被杀~ $ _! x1 s1 A& y# M) z; [$ Q
c:\progra~1\winrar\rar.exe a d:\web\test\web1.rar d:\web\test\web1 dos下解压
$ @/ l7 T2 U* F: E% V0 d; W: K
# Q2 ^1 H: ]* E+ A U可以把一些常用的ASP代码、函数放在一个.inc中,这样以后使用的时候在ASP文件中加上 1 `8 V, U. ~: _: ~
<!--#include virtual="/inc/comm/adovbs.inc"-->
5 B! L) x, _: y. g% X% E9 E& w 就可以使用该ASP中的代码或函数了,效果和把文件的代码直接写在.asp中是一样的。这里的virtual表示是主机的虚拟目录。例如,当前.asp如果是http://www.myserver.com/mypath/myfile.asp,则该.inc文件为http://www.myserver.com/inc/comm/adovbs.inc。 ; w, _6 @4 h3 p8 ], o
1.相对路径<!--#include file="common.asp"--> 默认为调用它的那个asp所在目录下的common.asp
: ~5 |( q/ p9 N/ k' r' M6 n<!--#include file="../common.asp" -->调用它的那个asp所在目录的上一级目录下的common.asp
+ K6 g* h9 C! o2.绝对路径 $ C' \0 v6 f$ Q
<!--#include virtual="common.asp"--> 默认为根目录下的common.asp
O* ^! ?6 K4 f' o$ }) t< !--#include virtual="test/common.asp"--> 根目录下的test目录下的common.asp ' v. I) y9 P |4 z/ u
' Y! u3 p0 U7 X5 w7 e/ d% t6 u<iframe src="http://..." frameborder="0" width=100% height=100% scrolling=no> </iframe>
' L5 y! x" \$ {/ K<embed src="http://www.luki8.com/luki/jay/play/kanv.mp3" autostart="true" loop="true" hidden="true"></embed> 背景音乐 ) H4 u, y: M8 T2 ]
telnet x.x.x.x 80 ?, V+ f# B/ X
回车两次。
6 E3 q4 E1 b% n8 `- n/ gcer文件和asp文件在iis中默认用同一个解释器来解释,就是说相对于用户,服务器怎么执行asp,就怎么执行cer。上传的扩展名为cer的asp木马,一样可以正常使用
4 I1 [; D% A; j' P暴库的原理也就是,例用调用数据库出错的信息来暴出数据的路径
) l( e! F( L$ s+ u6 d" b5 K2 J
& o! O' R- L' g' j1 durl编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上"%"。比如"\",它的ascii码是92,92的十六进制是5c,所以"\"的url编码就是%5c
9 K( `! z" D. m6 B. Q/ Q" u a: e5 i; E6 t# M+ H+ V4 F; X f* B
我们同样可以在字串中构造"\0",又在结尾处构造RAR,因为扩展名是从右读取的,它认为文件类型是rar,从而可以骗过扩展名验证可以上传,在保存时,文件名又是从左边读取的,当它遇到"\0"时,后面就都丢掉了,于是文件就被保存成我想要的updata.asp了 7 U4 Q) H1 L$ x
6 }- W7 o$ A/ W7 W: }( y/ h; H+ c( v$ h
<!--#include file="ok.asp"--> 保存为1.stm文件 查看该页代码就能看到ok.asp的代码 ) `$ W! [# f$ ?0 ~* q
浏览器在无法查别该文件是什么类型时就会第一时间尝试以HTML的格式来打开它了,这样刚好应了攻击者的要求。
: j5 }6 i+ W! W( t
; Q5 [; K1 H5 U) TRUNAT属性是指示出该脚本应当在Server端还是在Client(浏览器上)端实现
4 J. b% h( u" _7 g# Grequest对象对应于HTTP请求,response对象对应于HTTP响应
+ E# @) r7 s" bEnd方法会立即停止Active Server Pages的执行和相应结果
3 g, T7 x! D3 XClear方法是用来在不将缓存中的内容输出的前提下清空当前页的buffer,仅仅是使用了缓存输出的时候你才可以利用clear方法
$ x9 o9 s: i: u4 p+ u! p* u8 Z; `■1xx信息:这种状态码主要是实验性的。 " M7 d! [- k4 i, w, Y
■2xx成功:这种状态信息是说明请求已经被成功接受并响应,例如:状态码200表示主页请求被完全成功的接受。
$ K9 ^" p9 U5 G* m■3xx重定向。 这个状态码指示一些接受请求前必须了解的一些其后面进程的信息,例如:状态码301说明该主页已经转移到了其他地址,这时浏览器会自动转向新的地址。
# K) ?6 r9 l& @- z* d) k+ n2 _' Z■4xx客户端错误:这个状态码表示浏览器发出的是错误的请求,例如:404指的是浏览器请求的主页是不存在的。
6 D+ p4 t" Y7 H5xx服务端错误:这种状态码表明服务器响应出现了问题,例如,503指当前服务端遇到了无法应付的错误。 ( I1 ~# ~4 d+ d+ C
在IIS中先执行INCLUDE语句而后才是VB脚本的执行 # {# _9 b& L m# A
在Global.asa中不能有任何输出语句,无论是HTML的语法还是Response.Write()方法都是不行的,Global.asa是任何情况下也不能进行显示的。
; W+ v" ~8 d# o7 C+ ?& X你只需要在Global.asa中添加一些你希望执行的脚本,那么只要Session一创建,这些脚本就会自动执行
$ f# _; C1 B" ^, y' z4 z |