一、环境搭建

在phpstudy这一集成环境中搭建此漏洞练习靶场
(1)下载链接:

https://sourceforge.net/projects/bwapp/files/latest/download

(2)安装步骤:

  1. 下载后解压文件,将文件放在WWW目录下
  2. 在admin/settings.php下更改数据库连接设置
    username和password设置成自己数据库的用户名和密码


3. 运行PHPStudy,然后在浏览器打开http://127.0.0.1/bWAPP/install.php

点击here创建数据库
4. 安装成功,进入靶场主界面
输入用户名(bee)和密码(bug)

二、开始做题

HTML Injection - Reflected (GET)

那我们直接开始第一题吧

这里有两个框让我们输入,先看看源码

这里把我们输入的fistname和lastname直接带进htmli了

Htmli是按照我们等级来给函数的,我们看看no_check函数

没有过滤就直接输入了,所以我们直接输入xss代码即可

<script>alert(/xss/)</script>

我们再把难度设置成medium也就是中等难度

这里用了把尖括号换成实体了,但是用了urldecode函数,我们可以把代码先编码成url形式再输入进去

%3cscript%3ealert(%2fxss%2f)%3c%2fscript%3e

再把难度设置成高

看看源码,这里把我们的符号都设置成实体了,所以这是安全的

HTML Injection - Reflected (POST)

这关和上一关是一样的就是换成了POST运输过来了,这里就不一一说明了

HTML Injection - Reflected (URL)

low

我们可以发现通关url可以传输,所以我们在url中构造语句

但是由于url栏里直接构造代码会被进行url编码,所以通过burp抓包来修改url信息进行提交请求

在burp抓到的包里修改url,如图所示

好,成功了

medium&&High

查看源代码
这个就是过滤条件了,可以看到对发出请求的url包进了<script></script>>里,无法绕过,说明此过滤方式可以保证页面防御XSS攻击的安全性。
高等也是如此,中等和高等都无法绕过,是安全的

HTML Injection - Stored (Blog)

LOW

查看源码

<?php/*bWAPP, or a buggy web application, is a free and open source deliberately insecure web application.
It helps security enthusiasts, developers and students to discover and to prevent web vulnerabilities.
bWAPP covers all major known web vulnerabilities, including all risks from the OWASP Top 10 project!
It is for security-testing and educational purposes only.Enjoy!Malik Mesellem
Twitter: @MME_ITbWAPP is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License (http://creativecommons.org/licenses/by-nc-nd/4.0/). Copyright © 2014 MME BVBA. All rights reserved.*/include("security.php");
include("security_level_check.php");
include("selections.php");
include("functions_external.php");
include("connect_i.php");$entry = "";
$owner = "";
$message = "";function htmli($data)
{include("connect_i.php");switch($_COOKIE["security_level"]){case "0" :$data = sqli_check_3($link, $data);break;case "1" :$data = sqli_check_3($link, $data);// $data = xss_check_4($data);break;case "2" :$data = sqli_check_3($link, $data);// $data = xss_check_3($data);break;default :$data = sqli_check_3($link, $data);break;}return $data;}if(isset($_POST["entry_add"]))
{$entry = htmli($_POST["entry"]);$owner = $_SESSION["login"];if($entry == ""){$message =  "<font color=\"red\">Please enter some text...</font>";}else            { $sql = "INSERT INTO blog (date, entry, owner) VALUES (now(),'" . $entry . "','" . $owner . "')";$recordset = $link->query($sql);if(!$recordset){die("Error: " . $link->error . "<br /><br />");}// Debugging// echo $sql;$message = "<font color=\"green\">Your entry was added to our blog!</font>";}}else
{if(isset($_POST["entry_delete"])){$sql = "DELETE from blog WHERE owner = '" . $_SESSION["login"] . "'";$recordset = $link->query($sql);if(!$recordset){die("Error: " . $link->error . "<br /><br />");}// Debugging// echo $sql;$message = "<font color=\"green\">All your entries were deleted!</font>";}}?>
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><!--<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Architects+Daughter">-->
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen" />
<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" /><!--<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>-->
<script src="js/html5.js"></script><title>bWAPP - HTML Injection</title></head><body><header><h1>bWAPP</h1><h2>an extremely buggy web app !</h2></header><div id="menu"><table><tr><td><a href="portal.php">Bugs</a></td><td><a href="password_change.php">Change Password</a></td><td><a href="user_extra.php">Create User</a></td><td><a href="security_level_set.php">Set Security Level</a></td><td><a href="reset.php" onclick="return confirm('All settings will be cleared. Are you sure?');">Reset</a></td><td><a href="credits.php">Credits</a></td><td><a href="http://itsecgames.blogspot.com" target="_blank">Blog</a></td><td><a href="logout.php" onclick="return confirm('Are you sure you want to leave?');">Logout</a></td><td><font color="red">Welcome <?php if(isset($_SESSION["login"])){echo ucwords($_SESSION["login"]);}?></font></td></tr></table></div><div id="main"><h1>HTML Injection - Stored (Blog)</h1><form action="<?php echo($_SERVER["SCRIPT_NAME"]);?>" method="POST"><table><tr><td colspan="6"><p><textarea name="entry" id="entry" cols="80" rows="3"></textarea></p></td></tr><tr><td width="79" align="left"><button type="submit" name="blog" value="submit">Submit</button></td><td width="85" align="center"><label for="entry_add">Add:</label><input type="checkbox" id="entry_add" name="entry_add" value="" checked="on"></td><td width="100" align="center"><label for="entry_all">Show all:</label><input type="checkbox" id="entry_all" name="entry_all" value=""></td><td width="106" align="center"><label for="entry_delete">Delete:</label><input type="checkbox" id="entry_delete" name="entry_delete" value=""></td><td width="7"></td><td align="left"><?php echo $message;?></td></tr></table></form><br /><table id="table_yellow"><tr height="30" bgcolor="#ffb717" align="center"><td width="20">#</td><td width="100"><b>Owner</b></td><td width="100"><b>Date</b></td><td width="445"><b>Entry</b></td></tr><?php// Selects all the records$entry_all = isset($_POST["entry_all"]) ? 1 : 0;if($entry_all == false)
{$sql = "SELECT * FROM blog WHERE owner = '" . $_SESSION["login"] . "'";}else
{$sql = "SELECT * FROM blog";}$recordset = $link->query($sql);if(!$recordset)
{// die("Error: " . $link->connect_error . "<br /><br />");?><tr height="50"><td colspan="4" width="665"><?php die("Error: " . $link->error);?></td><!--<td></td><td></td><td></td>--></tr><?php}while($row = $recordset->fetch_object())
{if($_COOKIE["security_level"] == "1" or $_COOKIE["security_level"] == "2"){?><tr height="40"><td align="center"><?php echo $row->id; ?></td><td><?php echo $row->owner; ?></td><td><?php echo $row->date; ?></td><td><?php echo xss_check_3($row->entry); ?></td></tr><?php}else{?><tr height="40"><td align="center"><?php echo $row->id; ?></td><td><?php echo $row->owner; ?></td><td><?php echo $row->date; ?></td><td><?php echo $row->entry; ?></td></tr><?php}}$recordset->close();$link->close();?></table></div><div id="side"><a href="http://twitter.com/MME_IT" target="blank_" class="button"><img src="./images/twitter.png"></a><a href="http://be.linkedin.com/in/malikmesellem" target="blank_" class="button"><img src="./images/linkedin.png"></a><a href="http://www.facebook.com/pages/MME-IT-Audits-Security/104153019664877" target="blank_" class="button"><img src="./images/facebook.png"></a><a href="http://itsecgames.blogspot.com" target="blank_" class="button"><img src="./images/blogger.png"></a></div><div id="disclaimer"><p>bWAPP is licensed under <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/" target="_blank"><img style="vertical-align:middle" src="./images/cc.png"></a> &copy; 2014 MME BVBA / Follow <a href="http://twitter.com/MME_IT" target="_blank">@MME_IT</a> on Twitter and ask for our cheat sheet, containing all solutions! / Need an exclusive <a href="http://www.mmebvba.com" target="_blank">training</a>?</p></div><div id="bee"><img src="./images/bee_1.png"></div><div id="security_level"><form action="<?php echo($_SERVER["SCRIPT_NAME"]);?>" method="POST"><label>Set your security level:</label><br /><select name="security_level"><option value="0">low</option><option value="1">medium</option><option value="2">high</option></select><button type="submit" name="form_security_level" value="submit">Set</button><font size="4">Current: <b><?php echo $security_level?></b></font></form></div><div id="bug"><form action="<?php echo($_SERVER["SCRIPT_NAME"]);?>" method="POST"><label>Choose your bug:</label><br /><select name="bug"><?php// Lists the options from the array 'bugs' (bugs.txt)
foreach ($bugs as $key => $value)
{$bug = explode(",", trim($value));// Debugging// echo "key: " . $key;// echo " value: " . $bug[0];// echo " filename: " . $bug[1] . "<br />";echo "<option value='$key'>$bug[0]</option>";}?></select><button type="submit" name="form_bug" value="submit">Hack</button></form></div></body></html>

核心过滤机制

过滤代码

function sqli_check_3($link, $data)
{return mysqli_real_escape_string($link, $data);}

没有任何过滤,所以我们可以直接在文本框中输入payload

<script>alert('xss')</script>


Medium&&High

过滤代码

function xss_check_4($data)
{// addslashes - returns a string with backslashes before characters that need to be quoted in database queries etc.// These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte).// Do NOT use this for XSS or HTML validations!!!return addslashes($data);}

addslashes函数会对单引号、双引号以及反斜杠进行转义

addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。

预定义字符是:

单引号(')
双引号(")
反斜杠(\)
NULL

高等也是如此,所以中等高等无法绕过,是安全的

bWAPP之环境搭建及HTML注入相关推荐

  1. DVWA靶场环境搭建_SQL注入模拟靶机

    今天讲DVWA的两个重要方面:DVWA靶场环境搭建以及SQL注入模拟靶机 DVWA介绍:在近些年网络安全的高速发展中,初学者已经很难找到一个网站进行渗透了,曾几何时,一个漏洞,一个工具就可以在网上找到 ...

  2. eclipse中SSH三大框架环境搭建二

    通过上一篇博客我们可以轻松搭建strtus2的环境,接下来由我来继续介绍spring的环境搭建以及spring注入的简单使用 相关链接:eclipse中SSH三大k框架环境搭建<一> ec ...

  3. 【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★

    文章目录 一.Android 进程注入工具开发系列博客 二.Android 进程注入工具 源码下载编译 三.逆向环境搭建 四.使用注入工具进行逆向操作 1.获取远程进程号 2.注入工具准备 3.注入动 ...

  4. CVE-2018-1111漏洞复现-环境搭建与dhcp命令注入

    0×01 前言 2018年5月,在Red Hat Enterprise Linux多个版本的DHCP客户端软件包所包含的NetworkManager集成脚本中发现了命令注入漏洞(CVE-2018-11 ...

  5. 搭建mysql注入_常见的sql注入环境搭建

    常见的sql注入环境搭建 By : Mirror王宇阳 Time:2020-01-06 PHP+MySQL摘要 $conn = new mysqli('数据库服务器','username','pass ...

  6. bWAPP靶场漏洞环境搭建Docker版

    bWAPP靶场漏洞环境搭建Docker版 项目地址 官方网站:http://www.itsecgames.com/ 文件下载:https://sourceforge.net/projects/bwap ...

  7. SQL手工注入原理(含环境搭建) ─=≡Σ(((つ•̀ω•́)つ 知己知彼百战百胜 web安全

    文章目录 SQL测试环境环境搭建 下载与安装环境 开启与使用环境 sqli-labs环境部署 dvwa环境部署 SQL手动注入 SQL注入原理 SQL注入分类 SQL注入手段 寻找注点 利用注点 ge ...

  8. (环境搭建+复现)74CMS模版注入+文件包含getshell

    0x00 简介 骑士CMS人才招聘系统是基于PHP+MYSQL的免费网站管理系统源码,提供完善的人才招聘网站建设方案. 0x01 漏洞概述 骑士 CMS 官方发布安全更新,修复了一处远程代码执行漏洞. ...

  9. ssh mysql环境搭建 myeclipse_MyEclipse整合ssh三大框架环境搭载用户注册源码下载

    前言 SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...

最新文章

  1. android中常见的内存泄漏和解决的方法
  2. java修改数据库表结构_数据库设计(一):设计传统系统表结构(Java开发)
  3. RabbitMQ 入门
  4. Linux使用小于1024的端口号,Linux中如何让普通用户使用小于1024的端口
  5. Operations on Numbers Strings
  6. Imageloader5-ImageLoader的变量初始化
  7. 我的大学到研究生自学 Java 之路,过程艰辛,不放弃,保持热情,最终发现我是这样拿到大厂 offer 的!...
  8. 若依微服务版新建业务模块后提示找不到mapper的解决方法
  9. 03程序结构if for while
  10. IO中的阻塞、非阻塞、同步、异步概念分析详解
  11. 【Java中级篇】动态代理机制
  12. 米酷影视直播二开全修复版增加在线充值影视资源网站源码
  13. 查询url包含的字符串参数(js高程笔记)
  14. 《Python自然语言处理》——1.8 练习
  15. php 对象 scalar,Scalar Types
  16. sql 查询字段是中文/英文/数字 正则表达式
  17. 由陌生到认识——微积分
  18. easyUI的常用API
  19. 小米路由器青春版刷Padavan固件
  20. 【雅思大作文考官范文】——第十七篇: 'economic progress' essay

热门文章

  1. 导出excel HSSFWorkbook 只能最多导出65535条数据
  2. 使用IE打开特定类型的文件
  3. windows下,OpenGL播放NV12
  4. LevelDb日知录(Leveldb 实现原理)
  5. Mermaid—优雅而美丽
  6. 本地 vs. 云:大数据厮杀的最终幸存者会是谁?— InfoQ专访阿里云智能通用计算平台负责人关涛
  7. Mobox企业云存储的过去与未来
  8. PLC编程中用到的数据类型
  9. 显示HWC合成(hwc_display_contents_1_t,hwc_layer_1_t数据结构关系)
  10. 做程序化交易软件的好处