20145304 Exp9 Web安全基础实践
20145304 Exp9 Web安全基础实践
实验后回答问题
(1)SQL注入攻击原理,如何防御
SQL注入是将查询语句当做查询内容输入到查询的框中,以此来使服务器执行攻击者想让它执行的语句,而不是正常的应该执行的查询语句。
可在编写Web时进行输入语句合法性的判断,例如不允许出现SQL注入攻击中常出现的单引号或规定输入内容的类型等来判断输入是否合理,以此来防御攻击。
(2)XSS攻击的原理,如何防御
XSS是指将可以被浏览器执行的代码放入URL中,使其被执行。
可在编写Web时对输入语句进行合法性判断,例如不允许出现尖括号之类的判断条件。
(3)CSRF攻击原理,如何防御
CSRF是指用户登录信任网站时,也访问了危险网站,执行了危险网站中的一些恶意请求。
开wireshark捕包,看是否访问了恶意网站;设置web不长时间保存cookie;重要的网站使用专用的cookie等。
实验总结与体会
此次实验,掌握了SQL、XSS和CSRF攻击的同时,掌握了很多单词,还有了想去网站测试SQL注入的冲动,虽然能成功的概率很小。Web编程是一项很严谨的工作,需要注意的地方有很多,对输入的合法性要严格把控,不要盲目的执行用户输入,要先进行思考。
实践过程记录
Stored XSS Attacks
-
存储式XSS攻击
-
在进行攻击之前,先试了一下该任务的正常功能,输入标题和信息后,在Message List下多出来一个可点选的标题,点开后可以看到自己的发的帖子。
-
在message或title中填写可在Web网页下可以执行的代码即可完成攻击,但效果不同,在title中填写的代码会在submit后立即执行且不会再list下产生新的东西,而在massage中填写,则需点击该message的title才会执行添加的代码,在list中留有痕迹。
-
此次实验在massage中攻击成功后算通过。
Reflected XSS Attacks
-
反弹式XSS攻击
-
通过对题意的猜测,应该是利用服务器验证用户输入内容时对其进行攻击,提示可以将其发送到某一网站或发邮件,是受害者点击它。
-
实现了较为简单的在输入3个验证数字的框中多增添一个编好的并不属于原网站所需输入项来进行攻击,为方便观察,还是输入一个文本框
input=<script>alert("ha ha ha!");</script>
CSRF
-
发送一个email给新团体,包含指向恶意请求的URL
-
根据提示修改相应值,自动连接包含恶意请求的URL,像是钓鱼网站,在不知情的情况下登陆了了攻击者的URL。
- 点击生成的邮件,攻击成功。
CSRF Prompt By-Pass
- 该实验有两个要求,第一是包含恶意请求,第二是确认第一个要求是否攻击成功。
<iframe
src="attack?Screen=271&menu=900&transferFunds=5000">
</iframe>
<iframe
src="attack?Screen=271&menu=900&transferFunds=CONFIRM">
</iframe>
CSRF Token By-Pass
- 按照提示填写了代码,但没有找到提示中的token将其附加上去,导致失败,待再研究,可能是理解错了。
Log Spllfing
- 注入语句,使其显示登陆成功但其实并未登陆成功,即将登陆成功打印出来。
- 使用回车换行,将语句打印出来
String SQL Injection
- 通过SQL注入,将所有信息打印出来,而不只是需要查询的人。
- 利用永真式和注释符来实现。
Numeric SQL Injection
-
数字型SQL注入
-
下拉表单的注入,用户无法自由的输入,但可截获发送出去的请求包,修改后,再发送到服务器。
-
要求选择一个时打印出全部,可以使用永真式。
-
尝试了一下在网页上直接修改其代码
Database Backdoors
-
注入语句,修改数据库中的资料。
-
第一步:修改101的salary值
-
第二步:修改所有用户邮箱为固定邮箱。
Blind Numeric SQL Injection
- 查看题目,发现只能查询输入的账户是否存在,然而,题目要求我们查询cc_number为1111222233334444的pins值。
- 此时只能猜测数据库中的内容,利用已有信息与AND语句来让其判断是否为真,从而猜测到数据库中的内容。
Blind String SQL Injection
-
- 猜测数据库中的字符串内容
- 猜测数据库中的字符串内容