|
来源:http://www.hackblog.com/more.asp?name=lsaint7 c6 c+ {# {! Y# M$ g3 y# @
现在大部分html页面是动态页面放入了html模版而形成的静态页面,我们的攻击思路也就明确了,就是从这些静态页面里找出动态页面的地址,在找出注入点,我们需要的工具是sniffer。
' J( a' b% h g1 Q" f$ l" ?. \$ c' g) ]$ V+ P/ i' ?. u
访问这个 IP ,返回"No web site is configured at this address.",初步判断是虚拟主机 2 k3 ~" ` b! ]
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" , 直接跳转目录。 看到了,马上修改 ServUDaemon.ini文件 2 @6 x9 f7 H$ [) U# R7 q
% T. ]/ g- e/ k: j) s# _view-source:查看web代码 / P& d) O; y _4 X8 y0 D
总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入 0 t* [ k0 R9 N- ^* g" E1 B
and 1=(select @@VERSION) 这个是SQL判断版本号的语句 1'or'1'='1
5 ^8 Z- F3 [! q8 H; z0 O1'or'1=1
3 S8 W1 ~" o X3 A f; Z# j' m'or'='or'
3 u# J; ]4 N z& Q' a& N% C" F- c" a) q# K9 k1 ]6 c% c, [; O
select语句在判断查询条件时,遇到或(or)操作就会忽略下面的与(and)操作 $ r0 K" a( q' F
sql="select * from admin where username="&user&" and password="&pwd&""
8 ~$ m3 z, b- j \7 Z2 fsql="select * from admin where username='111'or'1=1' and password='pass'3 K) g0 m$ L) ~
sql="select * from admin where username='1'or'1'='1' and password='pass'
Y8 `& Y q' y' O4 u. u& [* |1 t( T. g# a! _$ J
开始菜单->运行->iexpress(输入运行这个命令)) e6 y: W( e+ L
然后呢就自己配置吧 其实就是利用系统自带的CAB打包压缩功能~
& Z$ d) h: W2 C只要你合并的文件不被杀合并器就不会被杀~
" w: q5 z+ G$ p) P! |% Y/ }2 Kc:\progra~1\winrar\rar.exe a d:\web\test\web1.rar d:\web\test\web1 dos下解压 ) Z" \* N8 T: r& E
9 F/ i# X: `, x; c' U9 @( R, r6 [可以把一些常用的ASP代码、函数放在一个.inc中,这样以后使用的时候在ASP文件中加上
, J+ z! j$ K$ h4 D. C, d6 C <!--#include virtual="/inc/comm/adovbs.inc"-->
' U# g. L5 |3 E) B1 d/ e) X" A% Z' ~ 就可以使用该ASP中的代码或函数了,效果和把文件的代码直接写在.asp中是一样的。这里的virtual表示是主机的虚拟目录。例如,当前.asp如果是http://www.myserver.com/mypath/myfile.asp,则该.inc文件为http://www.myserver.com/inc/comm/adovbs.inc。 4 R5 J Y4 b, j0 n
1.相对路径<!--#include file="common.asp"--> 默认为调用它的那个asp所在目录下的common.asp + S2 N0 }. B5 k5 x$ |) E) u3 I
<!--#include file="../common.asp" -->调用它的那个asp所在目录的上一级目录下的common.asp
+ ~( b! {; j1 @. C2.绝对路径 4 H& u. g2 Q3 [' \7 Z u0 ?* Q
<!--#include virtual="common.asp"--> 默认为根目录下的common.asp0 t" g7 m+ P( [: ]. b) G D
< !--#include virtual="test/common.asp"--> 根目录下的test目录下的common.asp ! l3 J3 c0 d$ \3 B
+ X0 I& t" Z M% n) y9 z a
<iframe src="http://..." frameborder="0" width=100% height=100% scrolling=no> </iframe>
5 E5 |* |5 n1 \9 ^8 j<embed src="http://www.luki8.com/luki/jay/play/kanv.mp3" autostart="true" loop="true" hidden="true"></embed> 背景音乐 0 }+ m+ n* o! P- `6 ^
telnet x.x.x.x 80
J8 j! v4 e7 Y& p' U8 n回车两次。
+ ^# N# U F+ S# wcer文件和asp文件在iis中默认用同一个解释器来解释,就是说相对于用户,服务器怎么执行asp,就怎么执行cer。上传的扩展名为cer的asp木马,一样可以正常使用 : f7 f( z7 y. Z. C
暴库的原理也就是,例用调用数据库出错的信息来暴出数据的路径 0 v0 C2 g8 p2 r1 @) @( }- }
, }; {9 i; w/ \% ?8 Aurl编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上"%"。比如"\",它的ascii码是92,92的十六进制是5c,所以"\"的url编码就是%5c
7 x. Q: \; n7 `+ Y
7 @! a6 e9 q$ _) @我们同样可以在字串中构造"\0",又在结尾处构造RAR,因为扩展名是从右读取的,它认为文件类型是rar,从而可以骗过扩展名验证可以上传,在保存时,文件名又是从左边读取的,当它遇到"\0"时,后面就都丢掉了,于是文件就被保存成我想要的updata.asp了
" Q$ _1 x: X4 s9 ~# y& _
/ ?+ K3 r" [) l% U2 p, h* l<!--#include file="ok.asp"--> 保存为1.stm文件 查看该页代码就能看到ok.asp的代码 # V- _1 c5 M& @! S" O% _
浏览器在无法查别该文件是什么类型时就会第一时间尝试以HTML的格式来打开它了,这样刚好应了攻击者的要求。 , S0 i* A9 j* ]: E
$ a$ k4 K; X" M1 T9 v5 O
RUNAT属性是指示出该脚本应当在Server端还是在Client(浏览器上)端实现
" f3 v3 y1 Y# r- grequest对象对应于HTTP请求,response对象对应于HTTP响应
4 j* X& \' L4 Q/ E- u6 QEnd方法会立即停止Active Server Pages的执行和相应结果 s4 }* l& Y; m O l8 o, Q9 q
Clear方法是用来在不将缓存中的内容输出的前提下清空当前页的buffer,仅仅是使用了缓存输出的时候你才可以利用clear方法
2 j+ O* x* [9 P1 a■1xx信息:这种状态码主要是实验性的。
, Z; M' h: b- x$ q. B# T" ~■2xx成功:这种状态信息是说明请求已经被成功接受并响应,例如:状态码200表示主页请求被完全成功的接受。
x8 o, A2 N9 p' d: R■3xx重定向。 这个状态码指示一些接受请求前必须了解的一些其后面进程的信息,例如:状态码301说明该主页已经转移到了其他地址,这时浏览器会自动转向新的地址。 / f4 Y# e' k& S+ r) |9 n* t4 f0 X
■4xx客户端错误:这个状态码表示浏览器发出的是错误的请求,例如:404指的是浏览器请求的主页是不存在的。
8 i" z+ M G# V! A6 E7 N/ L5xx服务端错误:这种状态码表明服务器响应出现了问题,例如,503指当前服务端遇到了无法应付的错误。
# \0 p: Z5 `8 y在IIS中先执行INCLUDE语句而后才是VB脚本的执行
/ w h8 K. ~- V. `4 m在Global.asa中不能有任何输出语句,无论是HTML的语法还是Response.Write()方法都是不行的,Global.asa是任何情况下也不能进行显示的。
+ v* n4 e% l1 M6 w$ l你只需要在Global.asa中添加一些你希望执行的脚本,那么只要Session一创建,这些脚本就会自动执行
, E" L5 N! {, l% X6 K5 u' T |