日期:2014-05-17  浏览次数:20712 次

一些jsp 综合性问题 希望大家帮帮忙!
注入条件:
只有调用数据库的动态页面才有可有存在注入漏洞,动态页面包括asp php jsp cgi等

注入原理:
程序对用户提交的变量没有进行有效的过滤,就直接带入查询语句中,这样,我们就可以提交具有数据查询功能的语句,加入到程序将要提交的信息中去,再根据服务器返回的信息来判断数据库内容。

我的实践:
我对以上两段段话不是很理解 我希望大家帮我解释下 比如我举个例子:
我用啊D扫了个有漏洞的站。asp的 然后用 and 1=1 检查该站是否可以检测。然后成功了。

但我学过jsp 我这儿有个简单的jsp网页(用DAO模型写的)然后我想在虚拟机做注入实验 但用and 1=1来检查是否可以注入,不成功。
http://192.168.25.129:8080/company/revertMessage.jsp?messageID=6
在以上网址(messageID为int型)我在后面加 and 1=1
tomcat错误:
//下面代码大概意思是从数据库取出数据
msgId = Integer.parseInt(request.getParameter("messageID"));
MessageDAOImpl mdao = new MessageDAOImpl();
Message msg = mdao.findById(msgId);
RevertDAOImpl rdao = new RevertDAOImpl();

我的问题是:
1)为什么我在asp页面下成功了 在jsp下失败了。是因为传值方法问题吗?
2)只有调用数据库的动态页面才有可有存在注入漏洞 这句话能解释下吗?
3)程序对用户提交的变量没有进行有效的过滤,就直接带入查询语句中 这句话是怎么理解,和上面两种情况有关系吗?

问题有点多,先谢过大家。希望得到解答,或者给些相关参考资料,谢谢!


------解决方案--------------------
有可能不等于一定会。
如果用PreparedStatement处理SQL语句,即使没有进行过滤,也不会成功注入。
------解决方案--------------------
由于msgId = Integer.parseInt(request.getParameter("messageID"));中的Integer.parseInt已经出现异常

------解决方案--------------------
探讨
由于msgId = Integer.parseInt(request.getParameter("messageID"));中的Integer.parseInt已经出现异常

------解决方案--------------------
探讨

大家再给我个机会 我分数不多了 哈哈哈。
引用:
引用:
ls是对的,因为这样的mid是个int型,但是加上and 1=1就是个字符串了,

这个我没看懂!

我还想问下 那asp可以成功 能不能结合 下面两句 给我稍微讲下成功的原因?
1 只有调用数据库的动态页面才有可有存在注入漏洞
2 程序对用户提交的变量……