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. Linux运维学习第五周记

    休惊岁岁年年貌 且对朝朝暮暮人 细雨晴时一百六 画船鼍鼓莫违民 雨生百谷,春雨贵如油 第五周学记 这周主要学习了九三级磁盘.存储相关知识和Linux文件系统以及计算机网络的内容 磁盘和文件系统 磁盘结 ...

  2. Unity实现代码控制音频播放

    前言 很久没说过Unity了,现在说一下Unity用代码控制音频播放 准备工作 1.需要播放的音频 2.给需要加声音的对象加Audio Source组件 3.新建Play脚本,并绑定需要播放声音的对象 ...

  3. 攻防世界-web2

    打开题目直接一梭子代码,给我们了个加密的密文,然我们解出flag 审计一波 先时将flag字符串逆序,然后每一个ascii码数值+1,然后base64加密,然后逆序,然后再rot13加密 得到加密的密 ...

  4. ORA-12609报错分析

    问题:监控不断告警ORA-12609 Wed 10/14/2020 10:40 AM 12CRAC1-ALERT中出现ORA错误,请检查 171- nt OS err code: 0 172- Cli ...

  5. promise解决微信小程序中的request回调地狱

    //使用 request(url,methods ,data).then(res => { //服务器返回数据 console.log(res ); return request(url,met ...

  6. vue项目 封装api

    设计思路 为了加强项目的可维护性,建议将请求接口api进行统一封装, 一个常规项目的基础地址一般为唯一,所以考虑将基础地址设定一个变量 let  baseUrl: "xxxxxx" ...

  7. Java之HttpClient调用WebService接口发送短信源码实战

    摘要 Java之HttpClient调用WebService接口发送短信源码实战 一:接口文档 二:WSDL 三:HttpClient方法 HttpClient方法一 HttpClient方法二 Ht ...

  8. pytorch 图像分类数据集(Fashion-MNIST)

    import torch import torchvision import torchvision.transforms as transforms import matplotlib.pyplot ...

  9. TCP连接性能指标之TCP关闭过程(四次挥手)

    TCP关闭过程(四次挥手): ESTABLISHED: 当前建立连接状态 CLOSE_WAIT:Server端收到来自Client端的FIN包后,发送ACK回Client端,进入CLOSE_WAIT ...

  10. 833. Find And Replace in String —— weekly contest 84

    Find And Replace in String To some string S, we will perform some replacement operations that replac ...