20145120《网络对抗》Web安全基础实践

回答问题

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

SQL注入原理简单地说大概是,通过构造特殊的SQL命令提交表单,让服务器执行构造的恶意SQL命令,以对数据库进行恶意操作。

服务器前端可以通过限制用户输入的长度,检测用户输入的内容(例如#,--,1=1等敏感的代码)等方法防止SQL注入,后台程序也可以再检测一遍前端传过来的内容,数据库中存放的一些数据要进行加密或者hash处理。

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

XSS即跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

防御XSS可以通过检查用户的输入,看用户有没有在不必要的情况下输入< > /之类的字符或<script>等标签。

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

CSRF(Cross-site request forgery)即跨站请求伪造,也叫XSRF。通过伪装成受信用的网站,让用户执行恶意代码。

因为CRSF需要得到cookie,得到授权,站点可以通过将持久授权改为瞬时授权,对cookie进行hash,会话结束时清理cookies等方法防御CSRF。

实验总结与体会

听老师说这次可以少截图我就少截图了,但总感觉少了截图就好像少了很多东西。这次的实验让我深刻地理解了SQL注入,XSS,CSRF等攻击的攻击原理和方法。也再一次提醒我,陌生链接不要点。学完了发现,像SQL,XSS这些攻击大都需要猜测你的源代码,知道了你的源代码就很好攻击了,感觉只要知道了你源代码我总能给你做点恶意攻击,同时,编写WEB前端后台的时候也要注意常见的或可能遇到的攻击,最后能不能攻击到,攻防你来我往地,就要看谁思路广、套路深了。

实验过程:

启动WebGoat平台

输入java -jar webgoat-container-7.0.1-war-exec.jar启动WebGoat后,在浏览器输入127.0.0.1:8080/WebGoat可进入WebGoat平台

SQL注入

1 String SQL Injection

还是先跟随老师的步伐,做个课上讲过的题目先

题目要求注入sql得到所有返回结果,还把sql语句提示给了我们

开始试了' or 1=1;#,呃,没对,只好Java Source看下java源代码,找到该sql语句是

String query = "SELECT * FROM user_data WHERE last_name = '" + accountName + "'";

好吧,一个经验主义的错误,这不是MySql,不能用#注释,反正都看了代码,那就直接' or '1'='1

然后,在这里我遇上了一个超级大坑

答案理论上是正确的,但是出不来结果,一开始我还以为是自己做错了,后来又看了其他同学的博客,甚至用Hints上的标准正确答案smith' OR '1' = '1也不行

然后我才发现有个Restart Lesson,由于虚拟机是学长传下来的,之前这个任务已经做过,如果不重开一下,就算输入是对的也不会有出现应该出现的Congratulation

一波三折还是做出来了,心累。。。

2 Numeric SQL Injection

感谢岐浩的博客让我想起了burpsuite怎么用(怎么用burpsuite当代理抓包等,666)

题目要求返回所有天气信息,好做,Proxy中Options选项Add一个端口5120的,抓包,把包传给Repeater,把101改成101 or 1=1,点击GO发送,关掉截取,把改过的包传出,回到火狐能看到已经成功。

3 LAB: SQL Injection Stage 1: String SQL Injection

还是字符串SQL注入,这次没有提示了,按经验的话,先试试' or 1=1;--,填了8个字符之后发现长度被锁定了,这时候又到burpsuite出场了

本来以为构造内容的时候要用ASCII码(还是十六进制的),先试试直接构造试一下,抓包后password改成' or 1=1;--,结果直接成功了

4 LAB: SQL Injection Stage 3: Numeric SQL Injection

Stage 2,4环境不支持。只能选3了,题目是作为普通员工的“Larry”,使用SQL注入到View函数的参数(从List Staff页面)来查看老板('Neville')的配置文件。

我想了很久没想出来,终于忍不住看了提示,101 or 1=1 order by salary desc ,好像不行啊,标准答案又不行?

确认自己按过restart绿色小勾已经没了,我的直觉告诉自己我怕是又绕进一些不该绕的地方了,百度WebGoat 7.0.1 LAB: SQL Injection Stage 3

EXM???要先用密码larry登录Larry的账户,WTF???,我确认我用谷歌翻译的时候从没见到密码和用户名一样这种信息,我试过的,抓包改密码也登不上larry,我怀疑我读了假题目,感觉又在神奇的地方浪费时间了Orz

知道了之后就好办了,登录,准备抓包,抓住ViewProfile的请求包,改employee_id,GO,终结这个伤心的题目

5 Blind Numeric SQL Injection

还是做课上做过的题找一下信心,目的是找到cc_number为1111222233334444的表pins中的pin,

首先,101是真的,由此可以构造SQL

101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444')>?);
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444')<?);

即构造与pin的数值比较的语句,然后就是比大小的游戏了。我发现这里其实没有限制输入,连抓包都可以省了,配合End跳到最后修改,折半找,很快就确定为2364。

6 Blind String SQL Injection

想做之后才发现比上一个猜数字要难,首先要知道substring的用法,然后要慢慢猜数字,要猜五个,刚开始根本不会substring,还是参考了余佳源学长的实验报告做的。

XSS

7 Stored XSS Attacks

让我们输入影响其他用户浏览的内容,在内容里随便写个脚本<script>alert(233hhhhhhhh);</script>

还可以用来偷cookie,<script>alert(document.cookie);</script>

8 Reflected XSS Attacks

Enter your three digit access code:的输入总会被原封不动地返回,用上面的命令就可以,例如<script>alert(5120+document.cookie);</script>

CSRF

9 Cross Site Request Forgery (CSRF)

做一个邮件,包含一个到指定网站的链接,让收到的人转5000$

遗憾,这次我已经猜到参数要抄旁边的Parameters,可惜不会拼链接

最后还是看了提示,标题随意,内容填<img src='attack?Screen=284 &menu=900 &transferFunds=5000'>

10 CSRF Prompt By-Pass

和上面一题一脉相承,要多构造一条确认语句,参数变了一下,有了上面的基础简直没难度啊,同样标题随意,内容

233

<img src='attack?Screen=269 &menu=900 &transferFunds=5000'>

<img src='attack?Screen=284 &menu=900 &transferFunds=CONFIRM'>

其他

其实我本来还想做Psishing with XSS的,不过这个也是个我看了标准答案都没用的,我都填标准答案了还是不给我打勾,不知道又哪里绕进去了。

不过光是骗骗用户名密码倒是做出来了

还有CSRF Token By-Pass,本来也是向做的,不过后来感觉看不懂,填了参数mian不知道怎么得到想要的响应。

20145120黄玄曦《网络对抗》Web安全基础实践的更多相关文章

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

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

  2. 20145120黄玄曦《网络对抗》MSF基础应用

    20145120黄玄曦<网络对抗>MSF基础应用 准备工作 本来决定就是老师提供的XP虚拟机了,做着做着发现因为打补丁以及语言的问题,需要另外的虚拟机. 求来了不那么健壮的虚拟机,环境如下 ...

  3. 20145120黄玄曦《网络对抗》Web基础

    20145120黄玄曦<网络对抗>Web基础 回答问题 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的 ...

  4. 20145120黄玄曦 《java程序设计》 寒假学习总结

    1和2.我对未来规划不多,我认为好好学习积累知识能帮助我应对未来的挑战,这是我的学习动力之一,此外,了解新知识满足好奇心也是我的主要的学习动力. 3.我认为专业课学习比公务员考试重要,我认为专业知识是 ...

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

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

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

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

  7. 20145211黄志远《网络对抗》Exp9 Web安全基础实践

    20145211黄志远<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是利用输入的机会构造自己期望的请求,比如破坏掉用户名或者密码验 ...

  8. 20145222黄亚奇《网络对抗》web安全基础实践

    web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 原理:指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语 ...

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

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

随机推荐

  1. 【Python】求素数-稍加优化

    print 'Find prime number smaller then input number \n' print 'Please input a number:' import datetim ...

  2. SPAF模板

    #include <iostream> #include <cstring> #include <queue> #include <cstdio> #d ...

  3. PDO防止sql注入的机制

    使用PDO訪问MySQL数据库时,真正的real prepared statements 默认情况下是不使用的. 为了解决问题,你必须禁用 prepared statements的仿真效果. 以下是使 ...

  4. ExtJs4学习(六)MVC中的Model

    Model定义的两种方式 第一种 Ext.define("User",{ extend:"Ext.data.Model", fields:[{ name:'us ...

  5. python技巧之下划线(二)

    Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用’from module import *’导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划 ...

  6. 【BZOJ3166】[Heoi2013]Alo 可持久化Trie树+set

    [BZOJ3166][Heoi2013]Alo Description Welcome to ALO ( Arithmetic and Logistic Online).这是一个VR MMORPG , ...

  7. 爬虫入门【11】Pyspider框架入门—使用HTML和CSS选择器下载小说

    开始之前 首先我们要安装好pyspider,可以参考上一篇文章. 从一个web页面抓取信息的过程包括: 1.找到页面上包含的URL信息,这个url包含我们想要的信息 2.通过HTTP来获取页面内容 3 ...

  8. css3动画效果:2 简易动画

    1. transition动画:鼠标移上去  旋转放大 关键点--  :hover  \ transform: scale(*)  rotate(*deg) cards 2.关键帧动画: 位移动画 t ...

  9. 6.Insert Documents-官方文档摘录

    总结 1.插入单文档 db.inventory.insertOne( { item: "canvas", qty: , tags: , w: 35.5, uom: "cm ...

  10. linux c编程:Posix信号量

    POSIX信号量接口,意在解决XSI信号量接口的几个不足之处: POSIX信号量接口相比于XSI信号量接口,允许更高性能的实现. POSIX信号量接口简单易用:没有信号量集,其中一些接口模仿了我们熟悉 ...