|
来源:http://www.hackblog.com/more.asp?name=lsaint: t; J4 J% {! D N' `$ Y
现在大部分html页面是动态页面放入了html模版而形成的静态页面,我们的攻击思路也就明确了,就是从这些静态页面里找出动态页面的地址,在找出注入点,我们需要的工具是sniffer。 # ]: b0 W5 S: f
/ d* r9 p* ?, ~/ ?! g2 q' V* g
访问这个 IP ,返回"No web site is configured at this address.",初步判断是虚拟主机 : L1 Z) B1 l x2 r- _+ @! o# {/ c/ O
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" , 直接跳转目录。 看到了,马上修改 ServUDaemon.ini文件 . u) v0 ]/ a( @$ q; _& B
, Y8 g5 p4 V8 M+ W% @' Nview-source:查看web代码
0 ^( _- n9 A% x5 O: O' o" p总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入
/ }5 M% m6 j" g8 e( O. \# iand 1=(select @@VERSION) 这个是SQL判断版本号的语句 1'or'1'='1
+ P9 t1 c' l3 X1'or'1=1; x2 g+ o9 ?' \: D! @( n2 d$ m5 H5 c4 v3 c
'or'='or'
8 e: H4 d% H% p0 U3 ~3 j* x( [6 T Q( x* ?/ U
select语句在判断查询条件时,遇到或(or)操作就会忽略下面的与(and)操作 5 Q9 L6 k( u4 j7 `" r
sql="select * from admin where username="&user&" and password="&pwd&"" 8 J! [& t1 ~( G- k
sql="select * from admin where username='111'or'1=1' and password='pass'
4 m1 ]% y+ m) n3 P' b( ~$ X6 Ysql="select * from admin where username='1'or'1'='1' and password='pass' + |+ l& x" l+ ?/ `# ^
1 w2 U; J. f3 U0 Q" n* T4 v$ [
开始菜单->运行->iexpress(输入运行这个命令)
: Y9 J7 M3 h& h$ ]然后呢就自己配置吧 其实就是利用系统自带的CAB打包压缩功能~
# K' y+ ^3 ]) y8 z& G# R只要你合并的文件不被杀合并器就不会被杀~ , D7 T# Q; C- O: C! Y; N
c:\progra~1\winrar\rar.exe a d:\web\test\web1.rar d:\web\test\web1 dos下解压
& h5 [4 G, S' R1 y( p7 d& P; i7 z: b& K
可以把一些常用的ASP代码、函数放在一个.inc中,这样以后使用的时候在ASP文件中加上 ( L: U4 W* ]' P. `& l$ a+ B
<!--#include virtual="/inc/comm/adovbs.inc"--> $ ~; v5 i4 y* s" F" u; ]/ T; U
就可以使用该ASP中的代码或函数了,效果和把文件的代码直接写在.asp中是一样的。这里的virtual表示是主机的虚拟目录。例如,当前.asp如果是http://www.myserver.com/mypath/myfile.asp,则该.inc文件为http://www.myserver.com/inc/comm/adovbs.inc。
- ~# t- S$ w: B1.相对路径<!--#include file="common.asp"--> 默认为调用它的那个asp所在目录下的common.asp
' Y3 S/ B- a, ]6 J; s9 F<!--#include file="../common.asp" -->调用它的那个asp所在目录的上一级目录下的common.asp . q- Y2 A* C" ~7 v; v# Q( c
2.绝对路径
+ g4 O0 P0 k' d9 q<!--#include virtual="common.asp"--> 默认为根目录下的common.asp
; m( Q4 c: x1 k, a< !--#include virtual="test/common.asp"--> 根目录下的test目录下的common.asp
( |4 R4 o. ?" }5 d6 b) @
' q$ \/ c7 c# H6 F; j4 T4 C<iframe src="http://..." frameborder="0" width=100% height=100% scrolling=no> </iframe>7 m U! g' c1 C1 P$ R
<embed src="http://www.luki8.com/luki/jay/play/kanv.mp3" autostart="true" loop="true" hidden="true"></embed> 背景音乐 ' |5 p( S5 |$ P2 B0 N
telnet x.x.x.x 80
' r- d2 c# E6 G8 a4 f回车两次。
6 Q5 @- g- O8 Ccer文件和asp文件在iis中默认用同一个解释器来解释,就是说相对于用户,服务器怎么执行asp,就怎么执行cer。上传的扩展名为cer的asp木马,一样可以正常使用 8 Q! n) V- z% `5 _3 K) L
暴库的原理也就是,例用调用数据库出错的信息来暴出数据的路径
# J4 Q" y& C _ I* w# b7 R( ~5 E0 O6 K
url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上"%"。比如"\",它的ascii码是92,92的十六进制是5c,所以"\"的url编码就是%5c
4 |2 R7 E: Q3 T1 w. a7 h, ` x/ O5 I2 n& {8 X& h9 G; H+ k/ `4 j% Q
我们同样可以在字串中构造"\0",又在结尾处构造RAR,因为扩展名是从右读取的,它认为文件类型是rar,从而可以骗过扩展名验证可以上传,在保存时,文件名又是从左边读取的,当它遇到"\0"时,后面就都丢掉了,于是文件就被保存成我想要的updata.asp了
8 g" s. d9 l$ f$ s$ S! l2 e9 x
% s, C- i" p; j+ t5 d7 W* @6 K* P4 [<!--#include file="ok.asp"--> 保存为1.stm文件 查看该页代码就能看到ok.asp的代码
& T% @. o9 Y; h; w9 E2 q/ O浏览器在无法查别该文件是什么类型时就会第一时间尝试以HTML的格式来打开它了,这样刚好应了攻击者的要求。 0 F q( A ^% c& U) s/ F
1 d9 S3 w: z3 L
RUNAT属性是指示出该脚本应当在Server端还是在Client(浏览器上)端实现+ u. |/ o; @4 s; i k
request对象对应于HTTP请求,response对象对应于HTTP响应2 f* F- ]' `- u: h N9 s
End方法会立即停止Active Server Pages的执行和相应结果, ~' H5 M! M# m. v. w
Clear方法是用来在不将缓存中的内容输出的前提下清空当前页的buffer,仅仅是使用了缓存输出的时候你才可以利用clear方法# N- {" Y q r6 t( ]4 _
■1xx信息:这种状态码主要是实验性的。 % m2 W9 g% x, V' i
■2xx成功:这种状态信息是说明请求已经被成功接受并响应,例如:状态码200表示主页请求被完全成功的接受。
; J: ]* T9 W o3 i/ b9 s: m■3xx重定向。 这个状态码指示一些接受请求前必须了解的一些其后面进程的信息,例如:状态码301说明该主页已经转移到了其他地址,这时浏览器会自动转向新的地址。 + p- ]' f, B5 y. i
■4xx客户端错误:这个状态码表示浏览器发出的是错误的请求,例如:404指的是浏览器请求的主页是不存在的。 $ R1 \% f7 X0 q- v$ K
5xx服务端错误:这种状态码表明服务器响应出现了问题,例如,503指当前服务端遇到了无法应付的错误。 5 g% a# i( i5 N" ~& ~6 a: k
在IIS中先执行INCLUDE语句而后才是VB脚本的执行 3 H# h9 f7 l( y% {; ?; Y6 T$ T4 }
在Global.asa中不能有任何输出语句,无论是HTML的语法还是Response.Write()方法都是不行的,Global.asa是任何情况下也不能进行显示的。. r( J" s5 o) `0 B4 d
你只需要在Global.asa中添加一些你希望执行的脚本,那么只要Session一创建,这些脚本就会自动执行+ [) G0 ]& s9 n! F5 E2 ?; F# J
|