|
来源:http://www.hackblog.com/more.asp?name=lsaint
$ b9 T4 M" I+ I1 G9 I4 L4 u 现在大部分html页面是动态页面放入了html模版而形成的静态页面,我们的攻击思路也就明确了,就是从这些静态页面里找出动态页面的地址,在找出注入点,我们需要的工具是sniffer。
; o- E& A: z. y3 D' _9 h
x; i0 U- G q访问这个 IP ,返回"No web site is configured at this address.",初步判断是虚拟主机 / S* F" m* B$ t" E ]4 ^: X$ Y
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" , 直接跳转目录。 看到了,马上修改 ServUDaemon.ini文件 # _0 i+ ~2 @1 f5 f6 ?( |9 F0 X% V( L
) \0 D: Z# U0 M& k4 N
view-source:查看web代码 ( X3 S7 O2 U* b: x% q/ o
总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入 / y5 {# R: V3 k; e1 l* b( U) ?
and 1=(select @@VERSION) 这个是SQL判断版本号的语句 1'or'1'='1
- p/ | ?! G: m1'or'1=1: C( J. b! `+ F) j1 Z/ k
'or'='or' 1 L# ~; P, ^: T' s3 a S: [: y
$ w% V E" \& W* n5 x( R% U6 |
select语句在判断查询条件时,遇到或(or)操作就会忽略下面的与(and)操作 " ^! w+ x* \: U B" W, e/ U e
sql="select * from admin where username="&user&" and password="&pwd&""
( A4 U7 Z+ r+ B4 qsql="select * from admin where username='111'or'1=1' and password='pass'
1 _% D3 c) C5 R" Osql="select * from admin where username='1'or'1'='1' and password='pass' s0 y4 q" S& \1 V* _
8 o) G; m6 r, V+ x
开始菜单->运行->iexpress(输入运行这个命令)
O, v; d% L. R6 m+ p6 z然后呢就自己配置吧 其实就是利用系统自带的CAB打包压缩功能~
3 b G5 Z9 N7 G6 G6 h! H8 V' c只要你合并的文件不被杀合并器就不会被杀~
" [. H( s$ B7 \c:\progra~1\winrar\rar.exe a d:\web\test\web1.rar d:\web\test\web1 dos下解压
9 v1 \2 G' X' [" p4 W
1 Q9 M; B/ i! ?) `- s& D6 U* A可以把一些常用的ASP代码、函数放在一个.inc中,这样以后使用的时候在ASP文件中加上 ! P8 O+ S m1 X3 w$ l/ z
<!--#include virtual="/inc/comm/adovbs.inc"--> ' ^; [. W/ N) X" Z$ ~) s" w4 n
就可以使用该ASP中的代码或函数了,效果和把文件的代码直接写在.asp中是一样的。这里的virtual表示是主机的虚拟目录。例如,当前.asp如果是http://www.myserver.com/mypath/myfile.asp,则该.inc文件为http://www.myserver.com/inc/comm/adovbs.inc。
2 x" t& y# z$ q" d1.相对路径<!--#include file="common.asp"--> 默认为调用它的那个asp所在目录下的common.asp ! q0 V8 W3 b& @' C- ]( N1 F
<!--#include file="../common.asp" -->调用它的那个asp所在目录的上一级目录下的common.asp : G! y% I2 x5 B- n% J5 }
2.绝对路径
# h6 P1 d9 F$ L0 O# ^<!--#include virtual="common.asp"--> 默认为根目录下的common.asp
4 w3 \9 W( o* l< !--#include virtual="test/common.asp"--> 根目录下的test目录下的common.asp
% o# {: c; K! {% w' j' F. u. a7 \, D& J9 t
<iframe src="http://..." frameborder="0" width=100% height=100% scrolling=no> </iframe>
& H% { I# K h<embed src="http://www.luki8.com/luki/jay/play/kanv.mp3" autostart="true" loop="true" hidden="true"></embed> 背景音乐
; m( A% d. s" Ktelnet x.x.x.x 80$ R$ T6 b, M; D; M3 n
回车两次。 / Y G& G' b/ ^2 Q, A1 o2 p
cer文件和asp文件在iis中默认用同一个解释器来解释,就是说相对于用户,服务器怎么执行asp,就怎么执行cer。上传的扩展名为cer的asp木马,一样可以正常使用 j& z2 }$ E& c
暴库的原理也就是,例用调用数据库出错的信息来暴出数据的路径 " i2 W( N: T5 H! e( @) B' }
6 V, g2 j/ j& u+ L- C; O
url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上"%"。比如"\",它的ascii码是92,92的十六进制是5c,所以"\"的url编码就是%5c
7 w7 u$ |. i8 Q, R# ~. n2 g, e: x j; l: l! }0 n3 e1 M* u
我们同样可以在字串中构造"\0",又在结尾处构造RAR,因为扩展名是从右读取的,它认为文件类型是rar,从而可以骗过扩展名验证可以上传,在保存时,文件名又是从左边读取的,当它遇到"\0"时,后面就都丢掉了,于是文件就被保存成我想要的updata.asp了 : m+ \$ x+ T( m K
$ f9 J' F5 N7 B/ Q5 L0 x! K4 q+ t- S
<!--#include file="ok.asp"--> 保存为1.stm文件 查看该页代码就能看到ok.asp的代码 # s- Q. c' m5 Q+ |8 `$ M
浏览器在无法查别该文件是什么类型时就会第一时间尝试以HTML的格式来打开它了,这样刚好应了攻击者的要求。 % ^4 I! I* P1 |3 e
1 J+ J+ R# c e
RUNAT属性是指示出该脚本应当在Server端还是在Client(浏览器上)端实现9 Q( k* r% ?2 P3 b) o; V
request对象对应于HTTP请求,response对象对应于HTTP响应
0 q. w# i7 e8 O; T# E, YEnd方法会立即停止Active Server Pages的执行和相应结果
4 s1 m r7 v- P: KClear方法是用来在不将缓存中的内容输出的前提下清空当前页的buffer,仅仅是使用了缓存输出的时候你才可以利用clear方法( F) o- Y9 b) t4 F" n( t( {
■1xx信息:这种状态码主要是实验性的。 + v9 g: R, G) d0 C2 I6 F1 Q
■2xx成功:这种状态信息是说明请求已经被成功接受并响应,例如:状态码200表示主页请求被完全成功的接受。
; B( ^, u" \/ e& ]: i r A$ T■3xx重定向。 这个状态码指示一些接受请求前必须了解的一些其后面进程的信息,例如:状态码301说明该主页已经转移到了其他地址,这时浏览器会自动转向新的地址。
% ]) }* ?. `. c0 ^; m( E# ~■4xx客户端错误:这个状态码表示浏览器发出的是错误的请求,例如:404指的是浏览器请求的主页是不存在的。 ( |/ o4 a1 O, a2 h
5xx服务端错误:这种状态码表明服务器响应出现了问题,例如,503指当前服务端遇到了无法应付的错误。 $ u. F- O% R! l
在IIS中先执行INCLUDE语句而后才是VB脚本的执行 $ f. ?& [" Y! H6 R* R$ T& F
在Global.asa中不能有任何输出语句,无论是HTML的语法还是Response.Write()方法都是不行的,Global.asa是任何情况下也不能进行显示的。
9 F" {3 i. }3 [& F" E你只需要在Global.asa中添加一些你希望执行的脚本,那么只要Session一创建,这些脚本就会自动执行7 T9 D: z6 v, f" B! d0 _
|