bWAPP----HTML Injection - Reflected (GET)
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("<", "<", $data);
6 $input = str_replace(">", ">", $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 '&'
6 // '"' (double quote) becomes '"' when ENT_NOQUOTES is not set
7 // "'" (single quote) becomes ''' (or ') only when ENT_QUOTES is set
8 // '<' (less than) becomes '<'
9 // '>' (greater than) becomes '>'
10
11 return htmlspecialchars($data, ENT_QUOTES, $encoding);
12
13 }
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
- & (和号)成为 &
- " (双引号)成为 "
- ' (单引号)成为 '
- < (小于)成为 <
- > (大于)成为 >
bWAPP----HTML Injection - Reflected (GET)的更多相关文章
- bWAPP----HTML Injection - Reflected (URL)
HTML Injection - Reflected (URL) 核心代码 1 <div id="main"> 2 3 <h1>HTML Injection ...
- bWAPP----HTML Injection - Reflected (POST)
bWAPP--low--HTML Injection - Reflected (POST) 只不过是把传递方式换成post, 防护的三个级别和内容与GET相同 1 function htmli($da ...
- bWAPP练习--injection篇之HTML Injection - Reflected (GET)
什么是Injection? injection,中文意思就是注入的意思,常见的注入漏洞就是SQL注入啦,是现在应用最广泛,杀伤力很大的漏洞. 什么是HTML injection? 有交互才会产生漏洞, ...
- bWAPP练习--injection篇之HTML Injection - Reflected (POST)
POST的和之前的GET的过程差不多,只是表单的提交方式不一样而已. low 我们在表单中填入一个超链接 <a href="http://www.cnblogs.com/ESHLkan ...
- bWAPP练习--injection篇SQL Injection (GET/Search)
SQL注入: SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到 ...
- 前端 跨站脚本(XSS)攻击的一些问题,解决<script>alert('gansir')</script>
问题1:跨站脚本(XSS)的一些问题,主要漏洞证据: <script>alert('gansir')</script>,对于这个问题怎么解决? (测试应当考虑的前端基础攻击问题 ...
- Web API接口安全了解
2017版OWASP top 10 将API安全纳入其中,足以说明API被广泛使用且安全问题严重.自己尝试整理一下,但限于本人搬砖经验还不足.水平有限,本文只能算是抛砖引玉,希望大伙不吝赐教. 了解W ...
- OWASP 之 HTML Injection
Summary HTML injection is a type of injection issue that occurs when a user is able to control an in ...
- Cross-Site Scripting:Reflected 跨站点脚本:获取
随机推荐
- JS实现页面计时
前言 计时功能在网页上是非常多的,现在我就用原生JS做个计时功能吧 HTML <div><label>得到毫</label> <h5></h5&g ...
- JavaWeb中的域对象
域对象:可以在不同Servlet之间传递数据的对象,就是域对象,它们内置了map集合,都有setAttribute和getAttribute方法: Java Web有ServletContext.Se ...
- 自动识别PC端、移动端,并跳转
PC端和移动端代码是分开的,各有一套代码的情况下: 在PC端的HTML文件head标签中间添加一段自动识别移动端的JavaScript代码: <script type="text/ja ...
- .NET CORE WebAPI JWT身份验证
一.appsettings.Json文件配置 配置JWT公用参数. 1 /*JWT设置*/ 2 "JwtSetting": { 3 "Issuer": &quo ...
- Java8新特性探索之Optional类
为什么引入Optional类? 身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前 ...
- C#数据结构-线程安全队列
什么是线程安全? 答:线程安全是多线程编程时的计算机程序代码中的一个概念.在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意 ...
- NB-IoT和LORA技术通信距离是一样的吗
如今物联网的无线通信技术非常多,这其中主要分为两大类:一类是以Zigbee.WiFi.蓝牙.Z-wave等短距离通信技术为主:另一类就是以LPWAN(low-powerWide-AreaNetwork ...
- nacos、ribbon和feign的简明教程
nacos简明教程 为什么需要nacos? 在微服务架构中,微服务之间经常要相互通信和调用,而且一个服务往往存在多个实例来降低负荷或保证高可用.我们假定A服务要调用B服务,最简单的方式把B服务的地址和 ...
- Blazor 准备好为企业服务了吗?
如果您正在编写 .NET Web 应用程序,您很可能已经意识最近一年在.NET Web开发领域的热点都是 Blazor 的.如果你还没有了解Blazor,它允许您使用 C# 来编写 Web UIs,传 ...
- inno steup 安装判断 进程是否运行
1.添加了卸载判断用语 2.添加了安装程序进程是否存在使用了wmi服务 ; 脚本由 Inno Setup 脚本向导 生成! ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #d ...

