首页 > 编程 > ASP > 正文

asp实现的查询某关键词在MSSQL数据库位置的代码

2024-05-04 11:08:33
字体:
来源:转载
供稿:网友
整体而言,这段SQL只适宜用在小型数据库上,ASP中的循环也没效率,大库还是别用了,小库可以考虑。如果是大库的话,请联系皇子要另外一份牛人写的SQL查询语句。
 
 
 
功能是:以一个关键字为索引,搜索整个数据库,然后返回那个关键字所在的表名和列名。(很赞...特别是入侵的时候找不到用户名与密码所在的表的时候,如果能直接通过输入admin这个关键词找出字段...省得一个表一个表的看了。)于是根据那段语句,写了个asp的脚本,方便大家以后搜寻数据库。 

代码如下: 
复制代码代码如下:

<% 
'Confirm a keyword's position of a database(which table & which column) 
'By oldjun(http://www.oldjun.com) 
'Based on huangzi(http://www.2chuizi.com)'s sql 
Server.ScriptTimeout=999999999 
Response.Buffer =true 
On Error Resume Next 
keyword=request("keyword") 
if keyword="" then 
response.write "Need keyword!" 
response.End 
End if 
dim conn 
Set conn = Server.CreateObject("ADODB.Connection") 
Dim ConnStr 
'ConnectionString,Pls change! 
ConnStr="Driver={SQL SERVER};Server=localhost;UID=sa;PWD=sa;Database=master" 
Conn.open ConnStr 
conn.execute("CREATE TABLE huangzi_table(id int identity(1,1),biaoid int,biaoname nvarchar(1000))") 
conn.execute("insert huangzi_table select [id],[name] from sysobjects where xtype='U'") 
set rs =conn.execute("select count(id) as tnum from huangzi_table") 
tnum=rs("tnum") 
rs.close 
set rs=nothing 
for i=1 to tnum 
set rsbiao =conn.execute("select biaoid from huangzi_table where id="&i&"") 
biaoid=rsbiao("biaoid") 
set rst =conn.execute("select [biaoname] from huangzi_table where biaoid="&biaoid&"") 
tname=rst("biaoname") 
set rsl=conn.execute("select count([name]) as lnum from syscolumns where id="&biaoid&"") 
lnum=rsl("lnum") 
for j=1 to lnum 
topnum=j-1 
set rslie=conn.execute("select top 1 [name] from syscolumns where id="&biaoid&" and [name] not in 
(select top "&topnum&" [name] from syscolumns where id="&biaoid&")") 
liename=rslie("name") 
set rsresult=conn.execute("select top 1 ["&liename&"] from ["&tname&"] where CAST(["&liename&"] AS NVARCHAR(1000))='"&keyword&"'") 
if rsresult.bof or rsresult.eof then 
'response.write "Nothing-"&tname&":"&liename 
'response.write "<br>" 
else 
result=rsresult(liename) 
response.write result&"("&tname&":"&liename&")" 
response.write "<br>" 
End if 
rslie.close 
set rslie=nothing 
rsresult.close 
set rsresult=nothing 
next 
rsbiao.close 
set rsbiao=nothing 
rst.close 
set rst=nothing 
rsl.close 
set rsl=nothing 
next 
conn.execute("DROP TABLE huangzi_table") 
%> 

注:效率很差,使用时可能出现假死, 请耐心等待,大库还是别用了;代码简单,实现的简单功能,没技术含量,留着以后备用;换连接语句的时候有个缓存问题,建议重启下浏览器!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表