HTML Injection - Reflected (GET)

进入界面,

html标签注入

这是核心代码

 1 <div id="main">
2
3 <h1>HTML Injection - Reflected (GET)</h1>
4
5 <p>Enter your first and last name:</p>
6
7 <form action="<?php echo($_SERVER["SCRIPT_NAME"]);?>" method="GET">
8
9 <p><label for="firstname">First name:</label><br />
10 <input type="text" id="firstname" name="firstname"></p> //first name 框
11
12 <p><label for="lastname">Last name:</label><br /> //last name 框
13 <input type="text" id="lastname" name="lastname"></p>
14
15 <button type="submit" name="form" value="submit">Go</button> //按钮标签
16
17 </form>
18
19 <br />
20 <?php
21
22 if(isset($_GET["firstname"]) && isset($_GET["lastname"]))   //以GET方式获取表单传递的firstname和lastname,isset检测是否存在
23 {
24
25 $firstname = $_GET["firstname"]; //接受参数
26 $lastname = $_GET["lastname"];
27
28 if($firstname == "" or $lastname == "")   //如果其中一个为空,显示下边内容
29 {
30
31 echo "<font color=\"red\">Please enter both fields...</font>";
32
33 }
34
35 else
36 {
37
38 echo "Welcome " . htmli($firstname) . " " . htmli($lastname);
39
40 }
41
42 }
43
44 ?>
45
46 </div>

过滤部分

 1 function htmli($data)
2 {
3
4 switch($_COOKIE["security_level"])
5 {
6
7 case "0" :
8
9 $data = no_check($data);
10 break;
11
12 case "1" :
13
14 $data = xss_check_1($data);
15 break;
16
17 case "2" :
18
19 $data = xss_check_3($data);
20 break;
21
22 default :
23
24 $data = no_check($data);
25 break;;
26
27 }
28
29 return $data;
30
31 }
32
33 <label>Set your security level:</label><br />
34
35 <select name="security_level">
36
37 <option value="0">low</option>
38 <option value="1">medium</option>
39 <option value="2">high</option>
40
41 </select>

1.low级别

function no_check($data)
{ return $data; }

没有过滤

2.medium

 1 function xss_check_1($data)
2 {
3
4 // Converts only "<" and ">" to HTLM entities
5 $input = str_replace("<", "&lt;", $data);
6 $input = str_replace(">", "&gt;", $input);
7
8 // Failure is an option
9 // Bypasses double encoding attacks
10 // <script>alert(0)</script>
11 // %3Cscript%3Ealert%280%29%3C%2Fscript%3E
12 // %253Cscript%253Ealert%25280%2529%253C%252Fscript%253E
13 $input = urldecode($input);
14
15 return $input;
16
17 }

str_replace():对<,>,进行替换,

urldecode()用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符

也就是进行URL编码可以绕过过滤





3.high
 1 function xss_check_3($data, $encoding = "UTF-8")
2 {
3
4 // htmlspecialchars - converts special characters to HTML entities
5 // '&' (ampersand) becomes '&amp;'
6 // '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set
7 // "'" (single quote) becomes ''' (or &apos;) only when ENT_QUOTES is set
8 // '<' (less than) becomes '&lt;'
9 // '>' (greater than) becomes '&gt;'
10
11 return htmlspecialchars($data, ENT_QUOTES, $encoding);
12
13 }

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

预定义的字符是:

  • & (和号)成为 &
  • " (双引号)成为 "
  • ' (单引号)成为 '
  • < (小于)成为 <
  • > (大于)成为 >
 


bWAPP----HTML Injection - Reflected (GET)的更多相关文章

  1. bWAPP----HTML Injection - Reflected (URL)

    HTML Injection - Reflected (URL) 核心代码 1 <div id="main"> 2 3 <h1>HTML Injection ...

  2. bWAPP----HTML Injection - Reflected (POST)

    bWAPP--low--HTML Injection - Reflected (POST) 只不过是把传递方式换成post, 防护的三个级别和内容与GET相同 1 function htmli($da ...

  3. bWAPP练习--injection篇之HTML Injection - Reflected (GET)

    什么是Injection? injection,中文意思就是注入的意思,常见的注入漏洞就是SQL注入啦,是现在应用最广泛,杀伤力很大的漏洞. 什么是HTML injection? 有交互才会产生漏洞, ...

  4. bWAPP练习--injection篇之HTML Injection - Reflected (POST)

    POST的和之前的GET的过程差不多,只是表单的提交方式不一样而已. low 我们在表单中填入一个超链接 <a href="http://www.cnblogs.com/ESHLkan ...

  5. bWAPP练习--injection篇SQL Injection (GET/Search)

    SQL注入: SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到 ...

  6. 前端 跨站脚本(XSS)攻击的一些问题,解决<script>alert('gansir')</script>

    问题1:跨站脚本(XSS)的一些问题,主要漏洞证据: <script>alert('gansir')</script>,对于这个问题怎么解决? (测试应当考虑的前端基础攻击问题 ...

  7. Web API接口安全了解

    2017版OWASP top 10 将API安全纳入其中,足以说明API被广泛使用且安全问题严重.自己尝试整理一下,但限于本人搬砖经验还不足.水平有限,本文只能算是抛砖引玉,希望大伙不吝赐教. 了解W ...

  8. OWASP 之 HTML Injection

    Summary HTML injection is a type of injection issue that occurs when a user is able to control an in ...

  9. Cross-Site Scripting:Reflected 跨站点脚本:获取

随机推荐

  1. 第二章 OSI参考模型

    一.产生背景 1.伴随着计算机网络的飞跃发展,各大厂商根据自己的协议生产出了不同的硬件和软件 2.为了实现网络设备间的互相通讯,ISO和IEEE相继提出了OSI参考模型及其TCP/IP模型 二.OSI ...

  2. CentOS 网卡固定地址配置

    修改4个文件后重启网卡 vim /etc/default/grub GRUB_CMDLINE_LINUX="resume=UUID=05dbb36b-dbba-40a3-ba99-1b044 ...

  3. Asp.Net Core如何根据数据库自动生成实体类

    通过引用Nuget包添加实体类 运行 Install-Package Microsoft.EntityFrameworkCore.SqlServer 运行 Install-Package Micros ...

  4. pwn之栈缓冲区溢出漏洞(入门)

    题目ret2text 题目信息确认 使用file命令查看文件类型 root@CTF:/home/# file ret2text ret2text: ELF 32-bit LSB executable, ...

  5. 【应用服务 App Service】App Service中上传文件/图片(> 2M)后就出现500错误(Maximum request length exceeded).

    问题描述 在使用App Service (Windows)做文件/图片上传时候,时常遇见上传大文件时候出现错误,这是因为IIS对文件的大小由默认限制.当遇见(Maximum request lengt ...

  6. Go之NSQ简介,原理和使用

    NSQ简介 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异. NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息.它具有分布式和去中心化 ...

  7. python 作业 用python实现 mysql查询结果导出带列名

    1 import pandas as pd 2 import numpy as np 3 import matplotlib as mpl 4 import matplotlib.pyplot as ...

  8. PowerDesigner 概念数据模型(CDM)

    大   中   小 PowerDesigner 概念数据模型(CDM) 说明 2014-05-07  大数据深...  来源  阅 51   转藏到我的图书馆   微信 分享: QQ空间 QQ好友 新 ...

  9. Longest common subsequence(LCS)

    问题 说明该问题在生物学中的实际意义 Biological applications often need to compare the DNA of two (or more) different ...

  10. ERROR: No matching distribution found for cv2

    ImportError: No module named cv2和No matching distribution found for cv2的问题 原因 这个是由于没有导入opencv库导致的 解决 ...