|
来源:http://www.hackblog.com/more.asp?name=lsaint
$ A! ~ b$ W7 ] 现在大部分html页面是动态页面放入了html模版而形成的静态页面,我们的攻击思路也就明确了,就是从这些静态页面里找出动态页面的地址,在找出注入点,我们需要的工具是sniffer。 ' D) n! s, N7 Y
& n% f! N7 y2 q; O3 X1 I$ ?
访问这个 IP ,返回"No web site is configured at this address.",初步判断是虚拟主机
7 N# E6 J% z; `' d6 Z/ x先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" , 直接跳转目录。 看到了,马上修改 ServUDaemon.ini文件 # t8 K# m( Q9 e1 }2 g! u; a
8 ~& E1 t8 z6 r1 c
view-source:查看web代码 & P( Z8 \9 f0 H
总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入 4 B- n7 M4 ?- r; m. t
and 1=(select @@VERSION) 这个是SQL判断版本号的语句 1'or'1'='1
4 l9 {+ _3 J% d9 x- D8 D1'or'1=1
% z1 Q9 }" q/ y1 ?. T+ D4 [' n( m'or'='or'
* p3 r, ?% V9 w8 J
# P W( I7 z% a4 P, t1 Gselect语句在判断查询条件时,遇到或(or)操作就会忽略下面的与(and)操作
4 I, h5 w" Q1 g" b9 ~- e2 Psql="select * from admin where username="&user&" and password="&pwd&""
1 W" n/ A' R x$ Y* z" ^sql="select * from admin where username='111'or'1=1' and password='pass'" w; l! {. s9 U# g% v+ l
sql="select * from admin where username='1'or'1'='1' and password='pass' " J8 y* n" m! Q& a
5 `" n: f* b( v( S开始菜单->运行->iexpress(输入运行这个命令)
7 q2 o$ m+ Q" i; ]% x然后呢就自己配置吧 其实就是利用系统自带的CAB打包压缩功能~; O$ _; m9 z5 q9 x
只要你合并的文件不被杀合并器就不会被杀~
* K/ M/ j7 T$ d' o; Ac:\progra~1\winrar\rar.exe a d:\web\test\web1.rar d:\web\test\web1 dos下解压
. u' s/ |$ I9 N& a$ @
. I$ u1 M- \$ t6 n可以把一些常用的ASP代码、函数放在一个.inc中,这样以后使用的时候在ASP文件中加上 * P5 |- \5 N1 i/ m$ A3 M
<!--#include virtual="/inc/comm/adovbs.inc"--> 8 o% A4 B0 A; }: L
就可以使用该ASP中的代码或函数了,效果和把文件的代码直接写在.asp中是一样的。这里的virtual表示是主机的虚拟目录。例如,当前.asp如果是http://www.myserver.com/mypath/myfile.asp,则该.inc文件为http://www.myserver.com/inc/comm/adovbs.inc。
. B, p+ V4 T( a9 A; P1.相对路径<!--#include file="common.asp"--> 默认为调用它的那个asp所在目录下的common.asp . }! e1 q2 b- k, \
<!--#include file="../common.asp" -->调用它的那个asp所在目录的上一级目录下的common.asp
5 S6 `, m- T" {" G2.绝对路径 & X e: \" ~/ }. [2 q( ~, D3 l
<!--#include virtual="common.asp"--> 默认为根目录下的common.asp
- M: j" T7 H$ v< !--#include virtual="test/common.asp"--> 根目录下的test目录下的common.asp
) {& I. _, Y9 ~; f3 z
' u5 q2 t5 g7 h$ Q7 h, j* u( k<iframe src="http://..." frameborder="0" width=100% height=100% scrolling=no> </iframe>
7 ]+ _' ?* D: \9 I1 l<embed src="http://www.luki8.com/luki/jay/play/kanv.mp3" autostart="true" loop="true" hidden="true"></embed> 背景音乐
3 V/ b7 |! r' c# i, h$ N% L- g- f6 vtelnet x.x.x.x 80
f( K& `2 [. R0 Q( y+ i回车两次。
3 A# ?4 t1 l/ h r- Ecer文件和asp文件在iis中默认用同一个解释器来解释,就是说相对于用户,服务器怎么执行asp,就怎么执行cer。上传的扩展名为cer的asp木马,一样可以正常使用
' E# V& V9 H( l: l Z暴库的原理也就是,例用调用数据库出错的信息来暴出数据的路径
4 f/ B' w) B" w: G% S* t& `/ ]! ^2 Z# Q
url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上"%"。比如"\",它的ascii码是92,92的十六进制是5c,所以"\"的url编码就是%5c
: o$ O. p9 n' j, H6 S% K5 K$ V' h% e" b+ |' W$ N% m) T5 R: w
我们同样可以在字串中构造"\0",又在结尾处构造RAR,因为扩展名是从右读取的,它认为文件类型是rar,从而可以骗过扩展名验证可以上传,在保存时,文件名又是从左边读取的,当它遇到"\0"时,后面就都丢掉了,于是文件就被保存成我想要的updata.asp了
. t' T& ]4 w+ d2 |# C, m2 R% C
- x5 V6 x3 g1 L: e<!--#include file="ok.asp"--> 保存为1.stm文件 查看该页代码就能看到ok.asp的代码 # e- Q4 Q( Q- h7 i2 v
浏览器在无法查别该文件是什么类型时就会第一时间尝试以HTML的格式来打开它了,这样刚好应了攻击者的要求。
, h/ T; D( ?5 N3 J1 ?" U" i% n
# b5 J" C' f( ^5 q4 p* U' nRUNAT属性是指示出该脚本应当在Server端还是在Client(浏览器上)端实现/ `5 X. J* e! b# |
request对象对应于HTTP请求,response对象对应于HTTP响应/ ~& R2 _! u) q
End方法会立即停止Active Server Pages的执行和相应结果
/ w/ X/ T! t7 t1 I% V6 P- jClear方法是用来在不将缓存中的内容输出的前提下清空当前页的buffer,仅仅是使用了缓存输出的时候你才可以利用clear方法
, J" |' G: A) k$ r9 F■1xx信息:这种状态码主要是实验性的。 ; j' n' {' `2 L2 x
■2xx成功:这种状态信息是说明请求已经被成功接受并响应,例如:状态码200表示主页请求被完全成功的接受。
+ A( N7 c( ?! E: T* [% I) K■3xx重定向。 这个状态码指示一些接受请求前必须了解的一些其后面进程的信息,例如:状态码301说明该主页已经转移到了其他地址,这时浏览器会自动转向新的地址。
" K7 i; n# d3 _' \: }■4xx客户端错误:这个状态码表示浏览器发出的是错误的请求,例如:404指的是浏览器请求的主页是不存在的。
/ f9 f2 S' G- ~5xx服务端错误:这种状态码表明服务器响应出现了问题,例如,503指当前服务端遇到了无法应付的错误。
% r) [" b2 K; o% ~: M- {在IIS中先执行INCLUDE语句而后才是VB脚本的执行 5 F* M! I4 h+ i7 W
在Global.asa中不能有任何输出语句,无论是HTML的语法还是Response.Write()方法都是不行的,Global.asa是任何情况下也不能进行显示的。
/ _" p& o; f: e( ~+ r你只需要在Global.asa中添加一些你希望执行的脚本,那么只要Session一创建,这些脚本就会自动执行7 M1 O6 y5 |( N6 ~
|