20145223 杨梦云 《网络对抗》 Web安全基础实践

1.实验后回答问题

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

**原理**:SQL注入攻击是通过构建特殊的输入作为参数传入web应用程序欺骗服务器,执行攻击者想要的恶意SQL语句。

**防御**:实现SQL注入的主要原因是程序对于用户输入的数据没有限制或者有疏漏,有以下一些方法:
1、限制用户输入的字符串长度,制定相关规则,如不许出现特殊符号、非法字符等,对合法性进行判断。
2、采用预编译语句集PreparedStatement而不是Statement。
3、使用正则表达式过滤传入的参数,对一些可能是有关sql注入的敏感字进行过滤。

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

**原理**:攻击者将恶意代码注入到网页上,代码通常是由HTML以及用户端脚本语言组成,这样的恶意代码会被执行。

**防御**:
依旧是对用户输入数据的合法性进行过滤和校验,禁止注入和恶意代码有关的符号。

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

**原理**:冒充受信任的用户来对网站发送恶意请求
过程:1.登录受信任网站A,并在本地生成Cookie。
2.在不登出A的情况下,访问危险网站B。 **防御**:
1、定时对浏览器保存的cookie进行清理
2、用户在提交表单的时候,需要同时输入图片随机的验证码
3、在表单里增加Hash值,以认证这确实是用户发送的请求,然后在服务器端进行Hash值比较验证用户的身份

2.实验总结与体会

最后一次实验做了XSS攻击、CSRF攻击、SQL注入的实验测试,感觉和之前sql注入的知识比较更加深入,要理解其中的攻击原理真的要一步步做的同时进行思考,水平有限,可能做不到真正意义上去成为一个攻击者,但是另一方面能知道该怎么防范相关的攻击,也是一种进步。比如这周刷屏票圈的恶意代码攻击,虽然看不太懂到底是什么原理,但是学会把防范措施做好也能免于中招。

3.实践过程记录

SQL注入

string sql injection

以用户Neville登录,在密码栏中输入' or 1=1 --进行SQL注入,一开始是失败的,网页源码对用户输入的字符长度和类型进行了限制,按照chw同学的方法,直接ctrl+shift+c更改原网页代码

修改好以后再重新输入即可成功

Numeric SQL Injection

用上面的方法,首先登陆Larry,登陆之后看到浏览员工信息的按钮ViewProfile,鼠标右键查看源代码

题目是要我们以Larry的身份来查看老板的账户信息,而老板的工资一般是最高的,直接右键选择inspect Element,找到源代码中的value值,将其改为101 or 1=1 order by salary desc --,将老板的信息排到第一个,就可以对他进行查看了。

字符串注入(String SQL Injection)

题目要求使用SQL注入查看所有的信用卡号。

last name输入' or 1=1;--后,我们构造的sql语句为SELECT * FROM user_data WHERE last_name = ''or 1 = 1--

其中1=1,所以这个语句中的判断条件永远为真(第一个分号用来闭合last_name的第一个分号,而第二个分号用来闭合last_name的第二个分号。)

数字型SQL注入(Numeric SQL Injection)

同样是利用sql语句查看所有记录,因为表单给出了选项,因此需要换一种途径,启动BurpSuite后添加一个新的端口用于监听——学长的码云中解释这个新增端口是为了避免占用

浏览器的设置:

BurpSuite捕获到的包:

修改station的值101 or 1=1,原理和上面一致,相当于构造永真式

命令注入(Command Injection)

利用BurpSuite捕包之后找出提交的数据,网页提交的位置如下

按照课题负责人注入的命令为AccessControlMatrix.help"&&ifconfig",前面是原来的正常命令。而&&在命令行中是执行另外一条语句,最后一个双引号用来封闭原来的双引号

使用其他命令如ls的结果:

盲数字注入(Blind Numeric SQL Injection)

目标是得到一个存放在pins表中值pin的内容,行号cc_number=1111222233334444,是一个int型的数据,利用101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 100 );101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );这两条语句对pin值进行判断,通过二分法在不断尝试之后的结果为2364,另一种方法则是利用BurpSuite进行暴力破解,具体步骤在lxm和zqh两位同学的博客里。

盲字符串注入(Blind String SQL Injection)——参考学长博客:20135321_余佳源_07_SQL注入原理与实践

原理和上题一样,对应区域名类型从int变为varchar,参考sql中的select语句最终形成的攻击代码为101 and (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'),1,1)<'z')

SUBSTRING方法:SUBSTRING(STRING,START,LENGTH) 将取得的字符串依次与不同字符的ascii码值比较,确定每一位字符的ascii码值,最终确定整个字符串。 1,1是指从前面查询的字符串中取得从第1个字符开始长度为1字符,即取第一个字符,与字符z的ascii码进行比较,通过返回的字符合法性判断该字符值。

启用BurpSuite捕获到的数据包如下:

通过不断对比ascii码的值,答案为“Jill”

log spoofing

问题:在日志中显示“成功登录”以欺骗用户。

在User Name文本框中输入%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行,看起来像是登陆成功

实际上仔细观察可以发现,最开始的时候显示的是login failed也就是登录失败

XSS

1、存储型XSS攻击(Stored XSS Attacks)

在文本框中插入<script>alert("20145223")</script>,当点击提交,触发执行语句,弹出对话框:

2、反射型XSS攻击(Reflected XSS Attacks)

原理和上一道题目差不多:输入可执行代码然后提交,触发隐藏在信息里面javascript代码,从而获取COOKIE

输入<script>alert(document.cookie);</script>

XSCF

CSRF

题目:发一个email给newsgroup,内容包括一个有恶意URL请求的图片。那么就是要求发一封包含XSRF页面恶意请求的图像的email,

构造的内容为<iframe src="attack?Screen=XXX&menu=XXX&transferFunds=XXX"></iframe>

更改attack的src、menu、transferFunds的数值参数,第一个值为网站,默认指向笨网址,第二第三个值从网页中寻找,这里是277和900,最后一个是按照题目要求的想让被攻击者转的钱,为5000

执行结果:

CSRF Prompt By-pass

和前者类似,发包含两个恶意请求的邮件给newsgrooup,一个是转钱的金额,另一个是确认转账,所以需要两个ifame模块,对整个过程的进行请求确认,点击邮件转账和转账确认同时完成,几个参数值都在网页上找

Database Backdoors

step1:

首先实现多条sql语句注入,直接在userid中输入101 or 1=1;--就能够通过

step2:

使用该SQL语句实现在myBackDoor表中一旦添加新用户那么就在用户表里将新用户的邮箱改为题目固定的邮箱

使用两个sql语句完成操作

101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = NEW.userid;

20145223 杨梦云 《网络对抗》 Web安全基础实践的更多相关文章

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

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

  2. 20145223 杨梦云 《网络对抗》 Web基础

    20145223 杨梦云 <网络对抗> Web基础 1.实验后回答问题 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分:(1) 表单标签:这里面包含了处理表 ...

  3. 20145223 杨梦云 《网络对抗》 MSF基础应用

    20145223 杨梦云 <网路对抗> MSF基础应用 1.实验后回答问题:用自己的话解释什么是exploit,payload,encode (1)百度百科上说Exploit 的英文意思就 ...

  4. 20145223 杨梦云 《网络对抗》shellcode实验+return-to-libc实验

    20145223 杨梦云 <网络对抗>shellcode实验+return-to-libc实验 shellcode注入实践 Shellcode基础知识 ·Shellcode实际是一段代码( ...

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

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

  6. 20145306 网路攻防 web安全基础实践

    20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...

  7. 20155313 杨瀚 《网络对抗技术》实验九 Web安全基础

    20155313 杨瀚 <网络对抗技术>实验九 Web安全基础 一.实验目的 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.基础问题回答 1.SQL注入攻 ...

  8. 20155313 杨瀚 《网络对抗技术》实验八 Web基础

    20155313 杨瀚 <网络对抗技术>实验八 Web基础 一.实验目的 1.Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含 ...

  9. 20155202《网络对抗》Exp9 web安全基础实践

    20155202<网络对抗>Exp9 web安全基础实践 实验前回答问题 (1)SQL注入攻击原理,如何防御 SQL注入产生的原因,和栈溢出.XSS等很多其他的攻击方法类似,就是未经检查或 ...

随机推荐

  1. 微信小程序wx:for循环

    最近做微信小程序碰到了一些问题,和wx:for循环相关,wx:for有很多用途,例如可以用于swiper中图片的循环,也就是所谓的轮播图,也可以用于其它的循环,可以大大地减少代码量. 但wx:for. ...

  2. Java - 网络IO的阻塞

    最近学习时碰到事件驱动和非阻塞的相关知识,随之想到了Java中的Reactor.io与nio的一些东西:在前辈的博客上翻了翻.复习复习,在此记录一番. 实在找不到比较大点的东西,于是随便弄了个压缩包, ...

  3. Tomcat服务器使用(二)

    1. 打包Javaweb应用 当开发人员在自己的开发机器上调试所有代码并通过后,为了进行产品发布,都需要将开发人员的源码打包成war包进行发布.之前已经了解了jar包,那么war包和jar包的区别是什 ...

  4. git-中的命令与理解

    改变到要操作仓库的目录创建文件夹(mkdir 文件夹名) git init初始化一个git仓库 git add .git add --all两个命令一样作用,添加目录里面所有文件到本地工作区 git ...

  5. HTTP状态码302、303、307区别

    HTTP状态码3XX表示重定向,表明浏览器需要执行某些特殊的处理以正确处理请求. 301 Moved Permanently 永久性定向.该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在 ...

  6. 在IIS中浏览网站时出现:无法打开登录所请求的数据库 "***",登录失败

    在IIS中发布Web应用程序后,浏览网站时出现无法打开登录所请求的数据库 "***",登录失败错误,如下图所示: 解决办法:打开系统Web.Config配置文件,查看数据库连接串是 ...

  7. C# Winform中的ComboBox控件绑定数据库项目作为列表内容

    //初始化院区下拉列表,使用了Oracle数据库中的表项目 try { //string connString = "User=system;Password=manager;Data So ...

  8. 消息循环中的TranslateMessage函数和DispatchMessage函数,特别注意WM_TIMER消息

    原文:http://www.cnblogs.com/xingrun/p/3583357.html TranslateMessage函数 函数功能描述:将虚拟键消息转换为字符消息.字符消息被送到调用线程 ...

  9. 【Python】面向对象编程思想

    概念 "笔"作为一个抽象的概念,可以被看成是一个类.而一支实实在在的笔,则是"笔"这种类型的对象. 一个类可以有属于它的函数,这种函数被称为类的"方法 ...

  10. Vue入门基础(火柴)

    前言 由于个人十分欣赏博友——小火柴的蓝色理想,他的博文我看了大多数,觉得十分的精彩,然而很多都是看后即忘.我想除了没有经常动手敲代码,更可能是在看的时候忽略了很多细节,因此打算把他的博文通通给“抄袭 ...