20145210姚思羽 《网络对抗技术》 Web安全基础实践
实验后回答问题
1.SQL注入攻击原理,如何防御
·SQL攻击的原理很简单,就是在用户名输入框里输入SQL语句,来欺骗数据库服务器进行恶意操作
·防御可以从以下几个方面下手:
(1)在web网页设计的时候禁止用户输入的内容写入后台执行程序
(2)设置过滤条件,将可疑的语句过滤掉
2.XSS攻击的原理,如何防御
·XSS攻击的原理主要是通过输入可执行代码来获取目标网站的cookie,从而实现用其他人的身份登录,并进行攻击
·关于XSS的防御也可以设置过滤语句,对于代码、可执行语句等一律过滤掉
3.CSRF攻击原理,如何防御
·CSRF的攻击原理主要是用其他用户的身份访问网站并利用网站生成的cookie向服务器发送请求
·要想防御CSRF攻击可以通过验证码等对正在登录的用户进行验证,同时不在页面中暴露用户的隐私信息
实验总结与体会
这次实验做起来还是挺有趣的,每一个小实验都有明确的目标,做实验的时候也知道自己在做什么,做了几个之后也是慢慢掌握了一些套路吧越做越顺手,想一想如果这些真的应用到了我们的生活中那简直可怕,以后登录网页还是要谨慎
实践过程记录
WebGoat开启
1.在命令行输入java -jar webgoat-container-7.0.1-war-exec.jar开启WebGoat
2.运行一段时间之后出现Starting ProtocolHandler表示开启成功,此时不要关闭命令行,打开浏览器访问localhost:8080/WebGoat
XSS注入攻击:
Phishing with XSS
1.该实验的目的是读取登录用户的用户名和密码。首先输入编辑的XSS攻击的代码,会显示如下界面:
2.输入用户名和密码进行登录,弹出窗口显示读取到用户名和密码
3.攻击成功!
Stored XSS Attacks
1.这个实验的目的是通过在title中输入代码使用户访问时弹出非预期的内容。在这里我们在title中输入代码
2.窗口弹出,攻击成功!
Reflected XSS Attacks
1.和上一个实验一样,输入代码
弹出对话框,攻击成功!
CSRF攻击:
Cross Site Request Forgery (CSRF)
1.这个实验的目的是通过邮件的方式伪造一个转账请求。我们需根据题目里给出的数值参数来输入代码,在文本框中写入
转账成功
题目中具体的参数可以参照右边的参数栏
CSRF Prompt By-Pass
1.和上一个实验类似,但是这个实验要求有转账请求和确认转账成功请求两个请求,在代码的transferFunds部分略有不同
2.输入代码
3.攻击成功,可以看到有上下两部分信息。
SQL攻击:
Numeric SQL Injection
1.该实验本来选中一个城市之后只能看到一条关于这个城市的天气信息,攻击之后选中这个城市可以显示所有城市的天气信息。
2.在网页代码中在任意一城市后面加上1=1永真式即可实现该题目
3.改好之后选中Columbia,Go!即可获得所有城市的天气
Log Spoofing
1.该试验的目的是在代码中加入用户名admin迷惑用户,当用户登陆的时候登录失败,但以为自己登陆成功了。
2.在user name 处写入代码
20145210%0d%0aLogin Succeed!%0d%0aUsername: admin
3.攻击成功!
String SQL Injection
1.该试验正常只能查看到一个人的信息,攻击后可以查看到所有人的信息了。
2.在输入框中输入' or 1=1;--,攻击成功!
LAB:SQL Injection(Stage 1 String SQL Injection)
1.首先在密码栏中输入' or 1=1 -- 进行SQL注入,但是登录失败
2.发现是密码长度设置太短,于是将密码长度改为20
3.再次登陆,登陆成功!
LAB:SQL Injection(Stage 3:Numeric SQL Injection)
1.首先更改密码限制长度,输入' or 1=1 -- 登录,出现如下界面
2.我们要通过员工来查看老板的信息,更改一下ViewProfile按钮的参数,使老板的信息被排到前面
3.登陆一下,可以看到老板的信息
Database Backdoors
1.先看一下默认的101用户的信息
2.接下来继续输入101; update employee set salary=100000,给用户101张涨工资
3.按照题目里要求的,输入
101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='[email protected]'WHERE userid = NEW.userid;
将邮箱改为我的邮箱,把101的工资偷走啦
Blind Numeric SQL Injection
1.该实验的目标是找到cc_number为1111222233334444字段的数值,我们首先输入
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
显示账号无效,说明pin的数值比10000小
2.接下来运用二分法慢慢缩小范围,找到pin的值为2364
3.输入找到的pin值,实验成功!