博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20145212 罗天晨 Web安全基础实践
阅读量:4326 次
发布时间:2019-06-06

本文共 2827 字,大约阅读时间需要 9 分钟。

一.实验后回答问题

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

  • 原理:SQL注入攻击是攻击者在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,把SQL语句当做用户名等输入正常网页中以获取数据库信息的攻击,最终达到欺骗服务器执行恶意的SQL命令。
  • 防御措施其实很多,举几个例子:
1.数据有效性校验;2.封装数据信息;3.去除代码中的敏感信息;4.替换或删除单引号;5.指定错误返回页面;6.限制SQL字符串连接的配置文件。

总而言之,就是要让web应用程序对用户输入数据的合法性进行判断,从而达到防范的目的。

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

  • 原理:恶意攻击者通过往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
  • 防范:对用户输入的数据进行过滤、合法性验证,设置不允许通过敏感字符或者对"<>"之类的字符进行替换。

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

  • 原理:CSRF是跨站请求伪造,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。
  • 防范:CSRF主要是针对cookie进行攻击的,所以防范方式也从cookie上着手:
    1.直接更换授权方式:将持久化的授权方法,如cookie改成为瞬时的授权方法,比如在每个form中提供隐藏field。
    2.定期清理保存的cookie。

二.实验总结与体会

这一次的实验用到了webgoat,在其中做了关于SQL注入、XSS攻击和CSRF攻击,由于是全英文的网页所以对英文能力也有一定的考验==,在上一次的web基础实验中我对SQL注入、XSS攻击的理解只是表面的理解,实现的功能也很简单,这些知识点在这一次的实验中得到了很直观的学习,并且这一次的实验也警示我们,做网站编程的时候一定要对用户输入的信息做一个合法性的判断,不然会非常危险。

三.实践过程记录

开启webgoat

1.在在终端中输入java -jar webgoat-container-7.0.1-war-exec.jar开启webgoat,直到出现INFO: Starting ProtocolHandler ["http-bio-8080"]

2.打开浏览器,在浏览器中输入localhost:8080/WebGoat进入webgoat

(一)SQL注入

Numeric SQL Injection

1.这一步中用到了burpsuite做代理。

2.将查找语句101后加上or 1=1

877181-20170510163800097-49294207.png

3.由于这个实验提示只能成功一次,我第一次没截图……后来就截不到了,只能看到小对勾qwq

877181-20170510165529894-1373293603.png

Log Spoofing

1.登陆欺骗,通过在用户名中输入%0d%0aLogin succeeded !admin使用户看起来像登录成功:

2.结果图如下:

877181-20170510163023535-1528247289.png

String SQL Injection

1.通过输入查询的语句使得整张表得以显示,在其中输入' or 1=1;--

2.此时注入的SQL语句为SELECT * FROM user_data WHERE last_name = '' or 1=1;--',即查询表中所有信息

3.效果如下:

877181-20170510163628207-629310157.png

Stage 1 String SQL Injection

1.由于这一次设置用户只能自己选择,我们就可以通过在密码里做文章登陆进去,在密码中输入' or 1=1 --

2.发现密码只能输入8位,于是可以改一下代码:
877181-20170510164953801-484498475.png

3.成功效果如下:

877181-20170510164749176-1586630028.png

Stage 3 Numeric SQL Injection

1.这个实验要求我们以larry的身份登录,实现对Neville的profile信息的浏览,首先跟上一次实验的方式一样登陆上去,这样点击ViewProfile是无效的

877181-20170510170147066-1241936562.png

2.在代理中将行为从Login改为ViewProfile

877181-20170510170025566-1732140662.png

3.将id改为Neville的ID,并让将其置于首位112 or 1=1 order by salary desc--

877181-20170510170816816-1553402812.png

4.成功看见了Neville的信息:

877181-20170510172555379-1129622406.png

Blind Numeric SQL Injection

1.猜测cc_number='4321432143214321' 的PIN值,使用盲注方式

2.输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 );然后看到不合法,使用二分法,在代理中截图如下:此时范围缩小到2000到2500之间

877181-20170510181952238-1887607038.png
877181-20170510182001582-1631439717.png

3.一步步用二分法尝试:得到值在2363和2365之间,也就是2364

877181-20170510182255644-1488976097.png
877181-20170510182305629-719517178.png

4.显示合法,成功:

877181-20170510182440144-111903618.png
877181-20170510182553347-552778571.png


(二)XSS攻击

Phishing with XSS 跨站脚本钓鱼攻击

1.然后编写前端代码并在输入框中注入这段前端代码


This feature requires account login:

Enter Username:
Enter Password:

2.会显示出网页

877181-20170510210813363-793059653.png

3.然后在弹出的网页中输入用户名和密码,提交即可截获

877181-20170510210015160-2068709698.png

Stored XSS Attacks 存储型XSS攻击

1.在Message里输入<script>alert("It's 5212!");</script>

2.出现超链接,点击会弹出:

877181-20170510205330160-108587068.png

Reflected XSS Attacks

1.在输入框中注入<SCRIPT>alert(document.cookie);</SCRIPT>得到cookies

2.成功:

877181-20170510211107035-782142876.png

3.也可以输入指定的URL值,这里的效果为弹出方框http://www.targetserver.com/search.asp?input=<script>alert("hello20145212");</script>

877181-20170510211356222-1012540987.png


(三)XSCF攻击

CSRF(Cross Site Request Forgery)

1.在message里输入<img src='attack?Screen=280&menu=900&transferFunds=100000' width='1' height='1'>这其中,280是我网页的scr,900是我的网页的menu,100000是转钱数额==

877181-20170510211955457-1440454978.png

2.点击20145212,方才的代码就会被执行

877181-20170510212203801-517703448.png

CSRF Prompt By-Pass

1.与上个实验类似,同样是通过邮件的方式进行恶意请求,这里添加了请求确认的要求,所以需要两个iframe模块,输入如下:

2.成功

877181-20170510213519847-543023950.png
877181-20170510213400613-1174775556.png


成功列表:

877181-20170510213810738-1469404772.png

877181-20170510213818363-1980232217.png

转载于:https://www.cnblogs.com/alovera/p/6820341.html

你可能感兴趣的文章
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_37、分布式缓存Redis介绍...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_42、SpringBoot常用定时任务配置实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_39、SpringBoot2.x整合redis实战讲解...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第14节 高级篇幅之SpringBoot多环境配置_59、SpringBoot多环境配置介绍和项目实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_41、SpringBoot定时任务schedule讲解...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_43、SpringBoot2.x异步任务实战(核心知识)...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第11节 Logback日志框架介绍和SpringBoot整合实战_45、SpringBoot2.x日志讲解和Logback配置实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_汇总
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_01传统架构演进到分布式架构
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_02 微服务核心基础讲解
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_04微服务下电商项目基础模块设计...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-01 什么是微服务的注册中心
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-03CAP原理、常见面试题
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-04 SpringCloud微服务核心组件Eureka介绍和闭源后影响...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-05 服务注册和发现Eureka Server搭建实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-06 服务注册和发现之Eureka Client搭建商品服务实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-07 Eureka服务注册中心配置控制台问题处理...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-01 常用的服务间调用方式讲解
查看>>