20145319 《网络渗透》web安全基础实践

问题回答

  • Sql注入攻击原理,如何防御

    • 攻击原理:由于对于用户输入并没做出相应限制,因此可以通过构造特定的sql语句,达到自身的一些非法目的
    • 防御方法:对于输入的字符做出限制,例如长度不能太长,不能包含一些特殊字符,使其无法构造sql语句
  • XSS攻击的原理,如何防御
    • 攻击原理:跨站脚本攻击,其原因也在于对于用户的输入字符没有做出限制,一些恶意用户可以将自身的恶意代码插入在url等地方,诱惑别人访问从而达到目的
    • 防御方法:与防御sql注入类似,要检查用户的输入字符串,并做出限制,例如过滤script这类敏感词
  • CSRF攻击原理,如何防御
    • 攻击原理:通过劫持会话,伪造身份等方式来达到一些非法目的,例如转账,支付等
    • 防御方法:使用验证码,表单中附加随机值,以此来防止冒充,在对于用户的隐私数据尽量进行加密处理,加密传输

实验过程

  • 键入命令java -jar webgoat-container-7.0.1-war-exec.jar开启webgoat

  • 浏览器中输入http://127.0.0.1:8080/WebGoat使用默认用户名和密码登录即可

sql注入练习(字符串注入)

  • 在菜单栏中选择String SQL Injection

  • 第一题大意是要求我们使用sql注入来调用全部用户的银行卡信息(英文原文就不再补充了),实现sql注入的关键就是如何构造出我们想要的sql语句,我们首先来观察网站给出的示例

  • 我们可以很轻易的找出网站是如何将用户输入的字符串拼接到早已经设计好的字符串中组成sql语句的——将输入的字符串填入到最后的引号之间,而我们如何能将所有的用户信息输出——只需要将where后的条件构造成永远为真即可

  • 首先我们要使用引号闭合第一个限制条件last_name并在后面再加上我们的构造的条件,使其永远为真,例如or 1=1或者or 2=2这类均可,于是,我们填入的字符串可以如下

sql注入练习(数字型)

  • 在菜单栏中选择Numberic SQL Injection

  • 本次的注入和上次不同,该题并没有文本框让我们直接进行输入操作,我们只能通过滑动文本框选择地点,sql语句的生成代码可能是写在web页面的源码中,也可能是在后台服务中进行,但是无论是哪一种,表单都需要将搜集到的信息写进数据包中通过网络传输给后台,这就给了我们篡改的机会

  • 我们先随便选择一个地点并进行查询,根据其反馈的sql语句来看,我们需要修改的就是station部分,之后我们就需要用到另一个工具burp-suite,通过将burp-suite设置浏览器的代理服务器,作为中间服务器,这样我们就可以截获从浏览器中发送出去的所有数据包,并将其中内容修改成我们想要的样子

  • 打开burp-suite在proxy的options选项中添加新的代理(默认为8080,不过被apache2占用了)

  • 修改了浏览器的代理服务器之后,随便选择一个城市就会发现burp-suite中已经抓到了我们刚刚发送出去的数据包(我这次选择了new york,station=103)

  • 其中第一行中的station部分就是我们这次修改的目标了,将station修改成station=103 or 1=1之后点击forward将数据包发送,查看response包,结果却和想象中的又一些出入(显示505错误)

  • 这是因为我们在修改的时候并没有注意到编码问题,在url编码中,并无法直接识别空格和等于号,因此在读取http版本时候发生了错误,无法得到正确结果,在查询url编码之后(空格为%20,等于号为%3d),将station修改成station=103%20or%201%3d1,之后点击forward即可得到正确结果

sql注入练习(命令型)

  • 命令型注入就是通过我们已掌握的sql注入的方法,给目标操作系统注入dos命令(这里依然通过burp-suite修改数据包的方式来完成注入),第一步还是查看反馈的sql语句

  • 我们观察反馈的sql语句,首先就需要使用双引号封闭第一部分,再通过&&附加上我们的另一部分想要执行的命令,例如"&&echo 5319",再注意url编码的问题,在helpfile栏的最后添加"%26%26echo%205319"就可以得到结果

Log spoofing

  • 题意是要我们使用管理员admin身份完成登录,其实就只是要根本的目的是将管理员admin登录成功这一条记录写进日志中

  • 首先我们进行尝试,无论我们输入什么username,日志都显示登录失败

  • 这次我尝试对输入的username做出一些改变输入guest ok来查看反馈结果

  • 这样我们就有一个思路如果我们输入任意用户名之后,接上我们想要写进日志里的记录是不是就达到了我们的目的,于是我们在考虑换行符的编码的情况下可以这样构造这样一条语句guest%0aLogin Succeeded for username:admin最后结果显示欺骗成功

sql注入练习(盲数字注入)

  • 按照题目的意思是,我们可以验证已经输入的数字是否合法,例如101,因此我们可以构造条件1 AND 条件2,观察最终结果是否合法来判断条件2是否为真
  • 例如我们可以构造101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5319 );来验证其设定的pin值是否大于5319,按照这个原理,我们可以不断的缩小所要搜寻的pin的值,直到找到该pin值
  • 不过我不是很理解的是,为何不通过直接输入数字观察结果为valid或者invalid来判断该数字大于还是小于pin值,通过二分法同样可以一步一步逼近设定的pin值,并不知道为何还需要注入

sql注入练习(盲字符串注入)

  • 基本思路类似于之前的盲数字注入,只是猜测的对象变成了字符所对应的ascii码,从根本上来说其实还是一种对数字的猜测
  • 构造101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), x, y) = 'h' );来测试出我们需要的字符串到底是啥
  • 因为这个测试次数较之上一个实验要多,所以完全依靠手工输入的工作量太大,建议学习蔡野同学的做法,使用burp-suite中的intruder中的payloads来进行爆破,一一测试所有可能性

xss练习(存储型)

  • 大意就是它会将你填写在文本框中的内容存储起来并发给他人,包括javascript代码

  • 所以这个我们只需要在文本框中随便填写一些代码作为实验即可,例如

      <script>
    alert(5319);
    </script>
  • 当你点开下方的链接时就会弹出内容为5319的对话框

xss练习(反射型)

  • 看了一下题目中的介绍,大概意思就是在反射型xss攻击中,攻击者可以往其他网站的url网址部分中插入script代码,来发给他人,来实现自身目的,与上一个练习的内容基本类似(一个直接写在文本中,一个写在网址里)
  • 例如:www.baidu.com/<script>alert(5319);</script>输入之后就会弹出内容为5319的对话框

xss练习(跨站脚本钓鱼攻击)

  • 在菜单栏中依次选择Cross-site scripting,phishing with xss,这个攻击类似于上一个练习的一个进阶版,不仅能插入script标签还能插入其他标签构成完整的web代码(如下)

      </form>
    <script>
    function hello(){
    alert("hello,5319");
    }
    </script>
    <form>
    <br><br><h2>please input your stu_number and pwd</h2><br><br>
    stu_number:
    <br><input type="text" name="stunumber"><br>
    password:
    <br><input type="password" name="pwd"><br>
    <input type="submit" name="submit" value="login" onclick="hello()"> </form>
  • 将如下简单的代码输入到输入框中,弹出如下界面,输入学号密码点击Login则会弹出hello,5319的弹窗,只要修改scprit标签中的函数,就可以实现更多非法功能,例如记录下用户输入的用户信息等

CSRF Prompt by-pass

  • 其实这个比较好实现,为了成功完成欺骗,您需要获得一个验证请求Token,这个就只需要通过文本框中嵌入两个标签,一个实现用户转账,一个实现确认界面,显示相关表单的外部参数为transferFunds=main,构造相应语句就可以实现我们的目的

      hello
    <img src='attack?Screen=400&menu=800&transferFunds=zk19'zk19 width='1' height='1'> <img src='attack?Screen=400&menu=800&transferFunds=CONFIRM' width='1' height='1'>

20145319 《网络渗透》web安全基础实践的更多相关文章

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

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

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

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

  3. 20155324《网络对抗技术》web安全基础实践

    20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...

  4. 20155326《网络对抗》Web安全基础实践

    20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...

  5. 20145203盖泽双 《网络对抗技术》实践九:Web安全基础实践

    20145203盖泽双 <网络对抗技术>实践九:Web安全基础实践 1.实践目标 1.理解常用网络攻击技术的基本原理. 2.Webgoat下进行相关实验:SQL注入攻击.XSS攻击.CSR ...

  6. 20145236《网络对抗》Exp9 web安全基础实践

    20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...

  7. 20145215《网络对抗》Exp9 Web安全基础实践

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

  8. 20145208 蔡野 《网络对抗》Exp9 web安全基础实践

    20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...

  9. 20145308 《网络对抗》Web安全基础实践 学习总结

    20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...

随机推荐

  1. cocoapods卸载与安装

    引用自:https://www.aliyun.com/jiaocheng/389907.html 一.首先卸载pod which pod 得到pod的路径 sudo rm -rf <pod的路径 ...

  2. ArcGIS API for javascript开发笔记(四)——GP服务调用之GP模型的规范化制作详解

    感谢一路走来默默陪伴和支持的你~~~ -------------------欢迎来访,拒绝转载------------------- 在之前的利用Python分析GP服务运行结果的输出路径 & ...

  3. .windows安装使用这些偏底层的Python扩展太

    .windows安装使用这些偏底层的Python扩展太不爽了,怎么彻底解决 error: Unable to find vcvarsall.bat呢? 1.不要按网上说的,安装MinGW,然后在“.. ...

  4. CentOs7 安装最新版的Git

    最近打算研究下Git并投入是用,当然要从安装开始了. 服务器的系统是CenterOs7,这个系统和之前的版本还些使用的不同,慢慢习惯吧. 安装方法有两种: 一.yum命令安装,此方法简单,并且会自动安 ...

  5. 2018/04/03 PHP 中的 进制计算问题

    还是先抛出一个问题 017 + 1 = ? -- 如果你知道的话,那也就不用看下面了,哈哈. 答案是 // 15 -- 如果你想的答案和这个不对的话,说明你也有这个问题,也应该学习一下啦. -- 首先 ...

  6. python2.7+pyqt4实现记事本基本功能

    记事本程序: # coding:utf-8 import sys from PyQt4.QtGui import QMainWindow from PyQt4.QtGui import QApplic ...

  7. ansible 批量在远程主机上执行命令

    ansible 和 saltstack 都是为了同时在多台主机上执行相同的命令, 但是 salt配置麻烦,ansible基本不用配置, ansible 通过ssh来连接并控制被控节点 1. 安装 第一 ...

  8. python 全局变量引用与修改

    一.引用 使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字.如: #! /usr/bin/python a = 1 b = [2, 3] def func(): if ...

  9. 【Loadrunner】Loadrunner Vuser 两种运行方式【error:not enough memory解决方案】

    Loadrunner Vuser 两种运行方式 报错如下解决方案: 报错原因:都消息内存,之前用户是按线程跑,一个进程开了多个线程,其中有部分内存是这些线程共享的,出错应该是内存出现冲突了不够用了.现 ...

  10. mysql 约束条件目录

    mysql 约束条件 mysql 约束条件 not null与default mysql 约束条件 unique key 唯一的键 mysql primary key 主键 mysql auto_in ...