高手帮我看看这两段asp会不会被sql注入

胡摩西 2009-08-20 09:56:15

1
<%
try
{
var strNumber=Request("textNumber")(1);
var strNumber =strNumber.substring(0,7);
var conn=Server.CreateObject("ADODB.Connection");
conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq="+Server.MapPath("AllItem.mdb"));
rs=conn.Execute("select * from NBTable where 号码="+strNumber);
if(!rs.eof)
if(rs(2).value!=rs(3).value)
{
Response.Write(rs(2)+"省"+rs(3)+"市"+rs(6)+"用户 "+"区号:0"+rs(4));
}
else
{
Response.Write(rs(3)+"市"+rs(6)+"用户 "+"区号:"+rs(4));
}
else
Response.Write("这个号码很有可能来自火星,数据库暂无记录");
conn.Close();
}
catch(e)
{
}

%>
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

2
<%@ Language=Jscript %>
<%
function GetPrice(ItemId)
{
var conn=Server.CreateObject("ADODB.Connection");
conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq="+Server.MapPath("/Price.mdb"));
rs=conn.Execute("select * from AnyCallTable where ItemId='"+ItemId+"'");
if(!rs.eof)
Response.Write(rs(2));
conn.Close();
}
%>

调用。。。
<%GetPrice("G808")%>
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

高手帮我分析下
...全文
115 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hookee 2009-08-20
  • 打赏
  • 举报
回复
要看怎么理解了,只是注入的话和select insert之类的无关,
可以可能通过类似
select * from NBTable where 号码=1 or exists(select * from NBTable)
得到一些限制访问的数据。
假设取得管理帐号密码的话就可进行进一步操作了。
access的话可看一下 http://hi.baidu.com/happy8d/blog/item/ec78c2f979b6b35d242df27d.html
胡摩西 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hookee 的回复:]
没有传任何参数到服务器就没关系了
[/Quote]
try
{
var strNumber=Request("textNumber")(1);
var strNumber =strNumber.substring(0,7);
var conn=Server.CreateObject("ADODB.Connection");
conn.Open("driver={Microsoft Access Driver (*.mdb)};dbq="+Server.MapPath("AllItem.mdb"));
rs=conn.Execute("select * from NBTable where 号码="+strNumber);
if(!rs.eof)
if(rs(2).value!=rs(3).value)
{
Response.Write(rs(2)+"省"+rs(3)+"市"+rs(6)+"用户 "+"区号:0"+rs(4));
}
else
{
Response.Write(rs(3)+"市"+rs(6)+"用户 "+"区号:"+rs(4));
}
else
Response.Write("这个号码很有可能来自火星,数据库暂无记录");
conn.Close();
}
catch(e)
{
}

%> 谢谢
帮我分析下这段呢,这段有查询 没写入语句
hookee 2009-08-20
  • 打赏
  • 举报
回复
没有传任何参数到服务器就没关系了
胡摩西 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hookee 的回复:]
都是sql字符串拼接的,没有处理,可以注入
rs=conn.Execute("select * from AnyCallTable where ItemId='"+ItemId+"'");
Item="' or 1=1;其他sql语句;select 'x" 的话,会执行
select * from AnyCallTable where ItemId='' or 1=1;其他sql语句;select 'x'


[/Quote]
这段代码<%GetPrice("G808")%> 是嵌在ASP上面的,浏览器没有传任何参数到服务器,这样也有注入风险?


第一个asp有客户端传参数到服务器,但是只有查询,没有写入,不知道这样有没有风险?
006因特达 2009-08-20
  • 打赏
  • 举报
回复
<%GetPrice("G808")%>
注入是要通过Request的
三楼の郎 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hookee 的回复:]
都是sql字符串拼接的,没有处理,可以注入
rs=conn.Execute("select * from AnyCallTable where ItemId='"+ItemId+"'");
Item="' or 1=1;其他sql语句;select 'x" 的话,会执行
select * from AnyCallTable where ItemId='' or 1=1;其他sql语句;select 'x'
[/Quote]
不会被注入,Access库不是SQL Server,不能同时执行多条SQL语句。
Jearol 2009-08-20
  • 打赏
  • 举报
回复
同意楼上
hookee 2009-08-20
  • 打赏
  • 举报
回复
都是sql字符串拼接的,没有处理,可以注入
rs=conn.Execute("select * from AnyCallTable where ItemId='"+ItemId+"'");
Item="' or 1=1;其他sql语句;select 'x" 的话,会执行
select * from AnyCallTable where ItemId='' or 1=1;其他sql语句;select 'x'

006因特达 2009-08-20
  • 打赏
  • 举报
回复
可能性不大,
不过觉得
var strNumber=Request("textNumber")(1);
再优化一下更好。
gxq323 2009-08-20
  • 打赏
  • 举报
回复
火星代码

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧