关于溢出漏洞的真实例子(原创)
2007-03-31 16:12
375 查看
下面是一个小妖投票系统3.30中的一个漏洞:
当href到action=viewcolligate时执行下面的代码:
case "viewcolligate"'查看综合投票结果
id=request.querystring("id")
if not isnumeric(id) then
response.write "<script>alert('操作提示:对不起,没有找到您要查看的信息!');history.back();</script>"
response.end
end if
set rs=conn.execute("select * from hfweb_colligate where id="&id&"")
if not rs.eof then
%>
<%
ci=1
set rs1=conn.execute("select * from hfweb_vote where c_id="&rs("id")&"")
if not rs1.eof then
do while not rs1.eof
%>
<%
//注意:这里执行了一个SQL语句"select sum(item_count) as asum"
set rs3=conn.execute("select sum(item_count) as asum from hfweb_item where vote_id="&rs1("id")&"")
if not rs3.eof then
asum=rs3("asum")
end if
rs3.close
set rs3=nothing
set rs2=server.createobject("adodb.recordset")
rs2.open "select * from hfweb_item where vote_id="&rs1("id")&"",conn,1,1
if not rs2.eof then
do while not rs2.eof
%>
//重点就在这里:这里显示了图片的长度随投票的数量变化而变化,单项投票数item_count/总投票数asum.
<td width="26%">
<%=rs2("item_title")%> </td>
<td width="46%"><img src='a.gif' border='0'><img src='b.gif' border='0' height='8' width='<%=(rs2("item_count")/asum)*300%>'><img src='c.gif' border='0'>
<font color='#A2A2A2'><%=rs2("item_count")%>票</font></td>
<td width="28%"><font color='#A2A2A2'><%
disbf=formatnumber((rs2("item_count")/asum)*100,2)
if disbf<0 then
response.write "0.00"
else
response.write disbf
end if%>%</font></td>
</tr>
<%
rs2.movenext
loop
end if
rs2.close
set rs2=nothing
%>
<%
ci=ci+1
rs1.movenext
loop
end if
rs1.close
set rs1=nothing
%>
<%
end if
rs.close
set rs=nothing
%>
这段代码执行后如果总投票数不为0那么将不会出现溢出,需要重点指出的是计算机会把任何数除以0看成无穷大.所以得到的结果可想而知了吧,如何改才能运行也不用我说了吧,如果有兴趣的朋友可以加我QQ45209737,一起探讨这方面的问题,呵呵.
当href到action=viewcolligate时执行下面的代码:
case "viewcolligate"'查看综合投票结果
id=request.querystring("id")
if not isnumeric(id) then
response.write "<script>alert('操作提示:对不起,没有找到您要查看的信息!');history.back();</script>"
response.end
end if
set rs=conn.execute("select * from hfweb_colligate where id="&id&"")
if not rs.eof then
%>
<%
ci=1
set rs1=conn.execute("select * from hfweb_vote where c_id="&rs("id")&"")
if not rs1.eof then
do while not rs1.eof
%>
<%
//注意:这里执行了一个SQL语句"select sum(item_count) as asum"
set rs3=conn.execute("select sum(item_count) as asum from hfweb_item where vote_id="&rs1("id")&"")
if not rs3.eof then
asum=rs3("asum")
end if
rs3.close
set rs3=nothing
set rs2=server.createobject("adodb.recordset")
rs2.open "select * from hfweb_item where vote_id="&rs1("id")&"",conn,1,1
if not rs2.eof then
do while not rs2.eof
%>
//重点就在这里:这里显示了图片的长度随投票的数量变化而变化,单项投票数item_count/总投票数asum.
<td width="26%">
<%=rs2("item_title")%> </td>
<td width="46%"><img src='a.gif' border='0'><img src='b.gif' border='0' height='8' width='<%=(rs2("item_count")/asum)*300%>'><img src='c.gif' border='0'>
<font color='#A2A2A2'><%=rs2("item_count")%>票</font></td>
<td width="28%"><font color='#A2A2A2'><%
disbf=formatnumber((rs2("item_count")/asum)*100,2)
if disbf<0 then
response.write "0.00"
else
response.write disbf
end if%>%</font></td>
</tr>
<%
rs2.movenext
loop
end if
rs2.close
set rs2=nothing
%>
<%
ci=ci+1
rs1.movenext
loop
end if
rs1.close
set rs1=nothing
%>
<%
end if
rs.close
set rs=nothing
%>
这段代码执行后如果总投票数不为0那么将不会出现溢出,需要重点指出的是计算机会把任何数除以0看成无穷大.所以得到的结果可想而知了吧,如何改才能运行也不用我说了吧,如果有兴趣的朋友可以加我QQ45209737,一起探讨这方面的问题,呵呵.
相关文章推荐
- 原创---关于实现comparable接口的排序例子
- 【漏洞分析】两个例子-数组溢出修改返回函数与strcpy覆盖周边内存地址
- [原创]关于《精通QT4编程》第一个例子无法编译的问题的解答
- 原创---关于实现comparable接口的排序例子
- [原创]关于《精通QT4编程》第一个例子无法编译的问题的解答
- 关于join方法的一个例子
- 关于Oracle过程,函数的经典例子及解析
- jQuery Ajax 方法调用 Asp.Net WebService 的详细例子(原创)
- 溢出植入型木马(后门)的原型实现 作者:FLASHSKY(原创)
- PHP关于依赖注入(控制反转)的解释和例子说明
- 关于在右下脚弹出窗口javascript代码,并用ASP.NET在后台调用(原创)
- 关于动态规划的几个例子
- 关于javaComparable和Comparator接口详解(简单的小例子)
- 关于服务器内存溢出导致宕机的总结
- 关于DbSharper的使用例子
- 【区块链108将】Primas创始人吴鹏:终结篡改抄袭 还原原创内容真实价值
- 关于深拷贝和浅拷贝(原创)
- 【原创】关于程序卸载的一个Bug
- 关于Java序列化和反序列化的理解以及概念和例子
- 关于java的synchronized关键字,wait(),notify() 的例子,方便大家快速理解和应用。