博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20145201李子璇 《网络对抗》 Web安全基础实践
阅读量:4348 次
发布时间:2019-06-07

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

1.实验后回答问题

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

  • 原理:通过构建特殊的输入作为参数传入web应用程序。即把SQL命令注入到Web表单的输入域或页面请求的查询字符串,和之前已经设定好的查询语句构成关联,欺骗服务器执行恶意的SQL命令,从而达到控制读取网页等目的。

  • 防御:对用户输入的参数进行过滤,对输入数据的合法性进行判断(不允许输入特殊字符,如:' 等)。

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

  • 原理:跨站脚本攻击。构造带有攻击代码的URL,将URL进行包装,被攻击者以为是正常的网页,点击,攻击代码随着html返回到被攻击者浏览器并执行,用户就中招了。
  • 防御:将一些不合理的标签(eg:< > % /)进行过滤;限制用户输入的字符,例如:只允许输入a-z A-Z 0-9

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

  • 原理:和xss类似,但是CSRF不用“骗取”用户信息,他是利用用户已经登录之前那个网站存储下来的cookie,以中招用户的身份完成一系列非法的操作。
  • 防御:最根本的就是解决cookie问题呗,可以增加验证码,用户每次提交表单都要输入验证码才行!

2.实验总结与体会

知道了为什么注册时不让用特殊符号。以后设计相关网页时也要注意,一定要对用户输入数据的合法性进行判断。太可怕了,一不小心就被攻击...

3.实践过程记录

完成列表

886975-20170514175913488-381550764.png

886975-20170514175919113-2100483526.png

SQL

Blind Numeric SQL Injection(数字型盲注入)

可以输入一个帐号,检测其是否合法。用返回信息(真或假)测试检查数据库中其它条目信息。 

目标是找到 1111222233334444 的pin数值(整型)。

比如我查了101账号是合法的

  • 然后是寻找pin数值
    查找PIN 数值是否大于10000。 
    101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 ); 
    页面显示值是不大于10000的。
  • 一直调整数值,来缩小判断范围,最终得出pin值的大小。
    最后输入的是: 
    101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') = 2364 ); 
    886975-20170509113209441-599063928.png
    发现合法 那么直接在框中输入2364即可。
    886975-20170509113246738-397507753.png

字符串型盲注入(Blind String SQL Injection) 

输入一个帐号,检测帐号是否合法。用该返回信息检查数据库中其它条目信息。 

目标是找到字段4321432143214321中pin 的数值(值为字符串)

  • 和上一个类似。
    输入查询语句:
    101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) < 'C' ); 
  • 这句使用了SUBSTRING 方法,获得pin字符数值的第一个字母,判断它是否比字母“C”小。
    SUBSTRING 的语法是:SUBSTRING(STRING,START,LENGTH) 
  • 依此类推,最终答案Jill,提交:
    886975-20170509114050863-120597699.png

Log Spoofing(日志欺骗) 

  

使用户名admin ,显示“成功登录”。  
操作方法(Solutions) 

  • 先试一下我的学号作为用户名,发现用户名后面的信息会在同一行显示。那么之后可以考虑用回车来进行sql注入。

    886975-20170509121500551-1532520363.png

  • 在用户名中输入 %0d%0aLogin Succeeded for username: admin (注:%0d是回车 %0a是换行符)

    就可以实现了

String SQL Injection(字符串型注入)

  • 目标是将所有信用卡信息一起显示出来。
  • 先尝试输一下

    886975-20170509114549504-974415261.png

  • 注入字符是' or 1=1 -- 原理是用'将字符和之前的截断,后面用永真式1=1,最后是‘--’把之后的内容注释掉

    886975-20170509114810457-1679863393.png

Database Backdoors(数据库后门) 

  • 可以先输入101,看一下得到的信息,可以发现没有验证,可以进行sql注入。
     
  • 101; update employee set salary=10000
    把编号为101的人工资修改成10000(这步我没截图- -后来发现回不去了...) 
     
  • 使用语句,添加后门,把邮箱全改为我学号:
    886975-20170509115457597-2058930168.png

xss

Stored XSS Attacks(保存型XSS攻击)

  • 攻击者写的Xss代码将被直接保存在服务器上,之后所有访问的用户都会中招。

直接在massage框中输入javascrip脚本,即可

提交之后,如果再次点击刚刚发布的帖子,就会出现弹框。

886975-20170510203306222-6260874.png
886975-20170514174931863-1704815403.png

Reflected XSS Attacks(反射型XSS)

和上一个类似,在下面文本框中输入 ,服务端会跳转到对应的错误页,如下:

886975-20170514175150051-1174630520.png

这样www.targetserve.com里的恶意js会被执行。

Phishing with XSS (跨站脚本钓鱼攻击)

  • search框编写前端代码并在输入框中注入这段前端代码

This feature requires account login:

Enter Username:
Enter Password:

  • 按要求输入username password 成功截获
    886975-20170514174457410-1983419782.png

CSRF

Cross Site Request Forgery (CSRF)

  • message里输入attack?Screen=286&menu=900&transferFunds=999999这其中,286是网页的scr,900是网页的menu,999999转钱数额

    886975-20170514175531879-533735226.png

  • 列表中出现刚刚提交的数据

    886975-20170514175555160-598396053.png

  • 点击代码执行

    886975-20170514175633222-2013082212.png

CSRF Prompt By-Pass

  • 通过邮件的方式进行恶意请求,需要两个iframe模块,如下:
  • 886975-20170514175834644-18386329.png

转载于:https://www.cnblogs.com/20145201lzx/p/6824539.html

你可能感兴趣的文章
Git(四) - 分支管理
查看>>
PHP Curl发送数据
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Ubuntu菜鸟入门(五)—— 一些编程相关工具
查看>>
valgrind检测linux程序内存泄露
查看>>
“==”运算符与equals()
查看>>
单工、半双工和全双工的定义
查看>>
Hdu【线段树】基础题.cpp
查看>>
时钟系统
查看>>
BiTree
查看>>
5个基于HTML5的加载动画推荐
查看>>
水平权限漏洞的修复方案
查看>>
静态链接与动态链接的区别
查看>>
如何使用mysql
查看>>
敏捷开发中软件测试团队的职责和产出是什么?
查看>>
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>
python的字符串内建函数
查看>>
Spring - DI
查看>>