来源:http://www.hackblog.com/more.asp?name=lsaint
2 d3 E* k: p5 L8 a1 U7 [6 w 现在大部分html页面是动态页面放入了html模版而形成的静态页面,我们的攻击思路也就明确了,就是从这些静态页面里找出动态页面的地址,在找出注入点,我们需要的工具是sniffer。
3 b8 R2 y2 P& ~: H) h# f' {) [8 N* o" M# r* r; X$ k3 Y
访问这个 IP ,返回"No web site is configured at this address.",初步判断是虚拟主机 9 }% u1 _4 ^0 Y8 q. @8 s7 e: \
先通过 aspshell 下载 Serv-U 的任意一个快捷方式,然后本地查看属性的目标 Serv-U 的目录是 "C:\Program Filesewfq4qrqtgy4635\Serv-U\" , 直接跳转目录。 看到了,马上修改 ServUDaemon.ini文件
- a4 A6 |8 _. E2 l: ~0 j
7 _: N0 t6 J1 {5 p/ pview-source:查看web代码 6 U" n7 M% h0 |+ L
总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入 / ]9 r9 s$ i5 y2 @* K0 z1 G
and 1=(select @@VERSION) 这个是SQL判断版本号的语句 1'or'1'='1
) |9 x5 V& i% \1 ~! k3 ]1'or'1=17 P, v6 V4 N( X( q7 X8 O
'or'='or' ( Q$ Y5 @' t. E: ]& Z2 T/ e: T7 [
7 n$ M }( r0 j; u, Qselect语句在判断查询条件时,遇到或(or)操作就会忽略下面的与(and)操作 4 j* [9 Y4 {3 W& @4 ]; Z
sql="select * from admin where username="&user&" and password="&pwd&"" # j1 e: E9 w! A
sql="select * from admin where username='111'or'1=1' and password='pass'
$ w m: M; A+ A0 m" W0 L- i. |4 Qsql="select * from admin where username='1'or'1'='1' and password='pass' e% y6 B q) m8 x
' r+ F! p% V7 S8 N" I+ [5 d
开始菜单->运行->iexpress(输入运行这个命令)
( i4 p. d% H `! V然后呢就自己配置吧 其实就是利用系统自带的CAB打包压缩功能~% g; i4 n9 L) e2 Y6 F2 j3 x
只要你合并的文件不被杀合并器就不会被杀~ % A2 _% C; f& J4 W
c:\progra~1\winrar\rar.exe a d:\web\test\web1.rar d:\web\test\web1 dos下解压 : M0 D$ q$ @1 ]: [# a" z& [
( b8 z t: T# M9 v3 P6 [可以把一些常用的ASP代码、函数放在一个.inc中,这样以后使用的时候在ASP文件中加上
+ G0 z% c8 i' V) u `: i5 l <!--#include virtual="/inc/comm/adovbs.inc"--> 4 s9 r! q) r- K4 y; L
就可以使用该ASP中的代码或函数了,效果和把文件的代码直接写在.asp中是一样的。这里的virtual表示是主机的虚拟目录。例如,当前.asp如果是http://www.myserver.com/mypath/myfile.asp,则该.inc文件为http://www.myserver.com/inc/comm/adovbs.inc。
( @1 u( O0 q' n: m1.相对路径<!--#include file="common.asp"--> 默认为调用它的那个asp所在目录下的common.asp 1 Z; V! ^. V6 g3 a
<!--#include file="../common.asp" -->调用它的那个asp所在目录的上一级目录下的common.asp
@+ m* ]# D, s6 K2.绝对路径
9 y, r! m1 A4 ?7 o<!--#include virtual="common.asp"--> 默认为根目录下的common.asp% c2 {& w6 ]; ~
< !--#include virtual="test/common.asp"--> 根目录下的test目录下的common.asp $ M( E) x; U+ e( t
+ W' R+ N \, R" Y4 z0 N
<iframe src="http://..." frameborder="0" width=100% height=100% scrolling=no> </iframe>( U2 j" c& O# u9 y& \
<embed src="http://www.luki8.com/luki/jay/play/kanv.mp3" autostart="true" loop="true" hidden="true"></embed> 背景音乐
: @6 G: K/ q3 q5 z Btelnet x.x.x.x 80
9 M& v# C6 J& Z1 Q" }& e回车两次。 9 b$ r, S" [' e2 \, r
cer文件和asp文件在iis中默认用同一个解释器来解释,就是说相对于用户,服务器怎么执行asp,就怎么执行cer。上传的扩展名为cer的asp木马,一样可以正常使用
' c* U) d$ g* v% K$ l9 p暴库的原理也就是,例用调用数据库出错的信息来暴出数据的路径 7 [8 ~& v0 p" [1 {& m+ l
( M" O! @/ K# U6 [2 Murl编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上"%"。比如"\",它的ascii码是92,92的十六进制是5c,所以"\"的url编码就是%5c . l2 i* D8 Y& I8 K4 v
$ q" N/ w* \5 P- N: U. A0 W4 @
我们同样可以在字串中构造"\0",又在结尾处构造RAR,因为扩展名是从右读取的,它认为文件类型是rar,从而可以骗过扩展名验证可以上传,在保存时,文件名又是从左边读取的,当它遇到"\0"时,后面就都丢掉了,于是文件就被保存成我想要的updata.asp了 ) G9 T/ [0 N+ k5 @
4 M1 z) W/ i k4 K<!--#include file="ok.asp"--> 保存为1.stm文件 查看该页代码就能看到ok.asp的代码
8 @- H: F( c* D( Y浏览器在无法查别该文件是什么类型时就会第一时间尝试以HTML的格式来打开它了,这样刚好应了攻击者的要求。
. O6 l u& V/ F2 X' [6 b& \9 Q+ y; U8 L. b d$ X& E
RUNAT属性是指示出该脚本应当在Server端还是在Client(浏览器上)端实现- T) R/ L: U$ A( @( a& K* m
request对象对应于HTTP请求,response对象对应于HTTP响应, @& N# _# z, r4 ?+ [) R* k: ? G( C' B$ f
End方法会立即停止Active Server Pages的执行和相应结果
! Y1 d& I7 U0 s) bClear方法是用来在不将缓存中的内容输出的前提下清空当前页的buffer,仅仅是使用了缓存输出的时候你才可以利用clear方法
. `6 v# n0 K1 d) L6 S$ X/ y( P- c■1xx信息:这种状态码主要是实验性的。
2 L3 L4 O0 F+ L7 G■2xx成功:这种状态信息是说明请求已经被成功接受并响应,例如:状态码200表示主页请求被完全成功的接受。
$ |! w0 @- n. }1 ]2 C3 X( ]( O■3xx重定向。 这个状态码指示一些接受请求前必须了解的一些其后面进程的信息,例如:状态码301说明该主页已经转移到了其他地址,这时浏览器会自动转向新的地址。 * @& I$ s# ]8 g! u
■4xx客户端错误:这个状态码表示浏览器发出的是错误的请求,例如:404指的是浏览器请求的主页是不存在的。 4 l( y* Q, y" {' E v/ b
5xx服务端错误:这种状态码表明服务器响应出现了问题,例如,503指当前服务端遇到了无法应付的错误。 / h7 g% l- e* |+ W0 G
在IIS中先执行INCLUDE语句而后才是VB脚本的执行
: x+ D3 H; Z- G! r在Global.asa中不能有任何输出语句,无论是HTML的语法还是Response.Write()方法都是不行的,Global.asa是任何情况下也不能进行显示的。
7 U& H P+ P3 X" o1 E5 X. Z你只需要在Global.asa中添加一些你希望执行的脚本,那么只要Session一创建,这些脚本就会自动执行
6 E! ^" x2 r2 i6 ^/ J: F# ` |