20145120黄玄曦《网络对抗》Web安全基础实践
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安全基础实践的更多相关文章
- 20145334赵文豪网络对抗Web安全基础实践
1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...
- 20145120黄玄曦《网络对抗》MSF基础应用
20145120黄玄曦<网络对抗>MSF基础应用 准备工作 本来决定就是老师提供的XP虚拟机了,做着做着发现因为打补丁以及语言的问题,需要另外的虚拟机. 求来了不那么健壮的虚拟机,环境如下 ...
- 20145120黄玄曦《网络对抗》Web基础
20145120黄玄曦<网络对抗>Web基础 回答问题 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的 ...
- 20145120黄玄曦 《java程序设计》 寒假学习总结
1和2.我对未来规划不多,我认为好好学习积累知识能帮助我应对未来的挑战,这是我的学习动力之一,此外,了解新知识满足好奇心也是我的主要的学习动力. 3.我认为专业课学习比公务员考试重要,我认为专业知识是 ...
- 2018-2019 20165221 网络对抗 Exp5 MSF基础
2018-2019 20165221 网络对抗 Exp5 MSF基础 实践内容: 重点掌握metassploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms0 ...
- 20145306 网路攻防 web安全基础实践
20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...
- 20145211黄志远《网络对抗》Exp9 Web安全基础实践
20145211黄志远<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是利用输入的机会构造自己期望的请求,比如破坏掉用户名或者密码验 ...
- 20145222黄亚奇《网络对抗》web安全基础实践
web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 原理:指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语 ...
- 20155324《网络对抗技术》web安全基础实践
20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...
随机推荐
- word中使用MathType能做什么
在Office中写论文,特别是一些比较专业的论文需要用到各种公式的.会发现有很多地方Office自带的公式编辑器都无法完成,所以要用到MathType公式编辑器这个好用的工具了.MathType是一款 ...
- 免费iOS第三方推送工具Urban Airship使用教程
本文转载至 http://blog.csdn.net/mamong/article/details/8542404 http://www.dapps.net/dev/iphone/ios-free ...
- 自己根据java的LinkedList源码编写的一个简单的LinkedList实现
自己实现了一个简单的LinkedList /** * Create by andy on 2018-07-03 11:44 * 根据 {@link java.util.LinkedList}源码 写了 ...
- 涨姿势UWP源码——IsolatedStorage
前一篇涨姿势UWP源码分析从数据源着手,解释了RSS feed的获取和解析,本篇则会就数据源的保存和读取进行举例. 和之前的Windows Runtime一样,UWP采用IsolatedStorage ...
- iOS 程序切换后台
1. -(void)animationFinished:(NSString*)animationid finished:(NSNumber*)finished context:(void*)conte ...
- python中,有关正则表达式re函数:compile、match、search、findall
1.全局匹配函数 re.compile(pattern=pattern,re.S).findall(text)函数: compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对 ...
- python之MySQL学习——数据操作
1.增 import pymysql as ps # 打开数据库连接 db = ps.connect(host=', database='test', charset='utf8') # 创建一个游标 ...
- canvas基本使用
1.什么是CANVAS canvas是html5新增的画布元素,可以通过javascript来在画布上绘制图形,图标以及任何视觉性的图像. 2.canvas的用途 替代flash,做各种动态效果,做小 ...
- JS给html控件赋值
<html> <head> <title> JS给html控件赋值 </title> <script language="javascr ...
- Java中native关键字使用
native是与C++异构开发的时候用的.java自己开发不会使用