注入攻击(二)--------HTML(有源码)

news/2024/10/21 3:17:01/

前序文章
注入攻击(一)--------SQL注入(结合BUUCTF sqli-labs)

目录

  • 示例网站搭建
    • 1.搭建LAMP开发环境
      • 1. MySQL
      • 2. PHP
      • 3. Apache
    • 写在示例前
    • 示例1.反射型HTML注入
      • 页面效果
      • 源码
    • 示例2.钓鱼表单
      • 页面效果
      • 源码
    • 示例3.存储型HTML注入
      • 页面效果
      • 源码

示例网站搭建

1.搭建LAMP开发环境

使用kali快速搭建LAMP开发环境,自带,不需要大费周章安装。用whereis命令查看是否有LAMP开发环境

1. MySQL

whereis mysql
mysql

  • 启动mysql服务

    若输入mysql -u root -p显示如下,说明服务未开启
    mysqloff
    输入sudo service mysql start启动服务,再输入,显示可以登录。
    mysqlon
    另:从未使用mysql 需要按如下步骤完成初始安装:

  1. 转换成特权用户,使用命令su

  2. 输入命令mysql_secure_installation,一路Y,安装完毕

    2. PHP

    whereis php
    whereisphp
    php -v
    phpversion

3. Apache

whereis apache2

  • 启动apache

    判断apache是否启动,可以打开浏览器访问localhost,若显示下图,说明未启动。
    apacheoff
    输入命令 sudo service apache2 start 启动apache服务。

    若显示下图,说明apache已经启动
    apacheon

写在示例前

apache的默认站点位置在/var/www/html
所以各位运行前需要将面的所有文件放置在该目录下,首先cd到该目录,创建三个文件夹

  • phishing_site
  • reflection_html_injection
  • store_html_injection
    创建文件夹使用mkdir命令
    然后再将相应的示例文件粘贴到对应文件夹下。
    (当然,你不创建文件夹也可以,只要你记得住对应的示例文件名即可)。

示例1.反射型HTML注入

页面效果

涉及文件

  • reflection_html_injection/index.php

浏览器中输入网址:localhost/reflection_site/index.php
页面效果:
reflection_html_injection
在输入框输入
<script>alert("哎哟,你干嘛");</script>
点击搜索显示如下:
reflection_html_injection2
这就是最基本的反射型html注入,但是,这种html并不会持久存在,而是伴随着每次注入在网页显示。

源码

 <!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>搜索页面</title></head><body><form action=" " method="GET"><label for="searchBox">搜索:</label><input type="text" id="searchBox" name="q"><input type="submit" value="搜索"></form><?phpif(null !== ($query = $_GET['q'] ?? null)){		echo "Your search result for:$query";}?></body>
</html>

示例2.钓鱼表单

页面效果

涉及文件:

  • phishing_site/index.php
  • phishing_site/reward.php

模拟在官方网站填写表单点击提交按钮后,通过HTML注入攻击向该网页注入钓鱼链接,跳转至第三方网页进行用户信息窃取.
浏览器中输入网址:localhost/phishing_site/index.php
phishing_site
跳转后进入第三方网站(这里为了演示方便直接俄访问了同服务器的文件)
phishing_site2

源码

phishing_site/index.php

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>搜索页面</title></head><body><form action=" " method="GET"><label for="searchBox">搜索:</label><input type="text" id="searchBox" name="q"><input type="submit" value="搜索"></form>   <h2>搜索结果:</h2>
<?php
//php8.1不能直接使用isset函数进行判断if(null !== ($query = $_GET['q'] ?? null)){	echo "<p>",$query,"你好,点击我查看你的大奖</p>" ;echo "<a href="."reward.php".">查看大奖</a>";}?></body>
</html>

phishing_site/reward.php

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>中奖信息填写</title></head><body><h1>恭喜你中奖啦!xx大学优秀毕业生!请填写下面的表单以便于我们联系你</h1><form action=" " method="GET"><label>联系信息</label><label for="username">姓名</label><input type="text" id="username" name="uname"><label for="phoneNumber">电话</label><input type="text" id="phoneNumber" name="phone"><label for="IDCard">身份证号</label><input type="text" id="IDCard" name="id"><input type="submit" value="提交"></form></body>
</html>

示例3.存储型HTML注入

页面效果

涉及文件

  • store_html_injection/index.php
  • store_html_injection/post.php

这种是持久性存在的,应为将注入的内容上传到了服务器端,影响了数据库。
index.php页面上方展示了两个填写表单,点击post后会将两个数据存入mysql数据库。
分割线下面是为了便于演示,选择查询数据库的所有信息展示在页面上。

浏览器中输入网址:localhost/store_html_injection/index.php
store_html_injection
现在开始html注入,在content 或者title中输入:

`

并提交数据库
store2

刷新页面后就会出现,并且换用户登录依然会这样显示,也就是说这种影响是持久的。破坏了网站的正常功能。
store3

源码

store_html_injection/index.php

<!DOCTYPE html>
<html>
<head><title>My Blog</title>
</head>
<body><h1>Welcome to my blog</h1><form method="POST" action="post.php"><label for="title">Title:</label><input type="text" name="title" id="title"><br><label for="content">Content:</label><textarea name="content" id="content"></textarea><br><input type="submit" value="Post"></form>
<hr><?php
// 数据库连接信息
$servername = "localhost:3306";
$username = "root";
$password = "991109";
$dbname = "ctf";// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);// 检查连接是否成功
if ($conn->connect_error) {die("连接失败: " . $conn->connect_error);
}// 查询comment表中的数据
$sql = "SELECT id, title,comment FROM comments";
$result = $conn->query($sql);// 如果有数据,输出到HTML页面
if ($result->num_rows > 0) {while($row = $result->fetch_assoc()) {echo "<p>ID: ".$row["id"]."<br>Title:".$row["title"]."<br>Comment: ".$row["comment"] . "<br><hr></p>";}
} else {echo "0 结果";
}// 关闭连接
$conn->close();
?></body>
</html>

store_html_injection/post.php

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {$title ="'".$_POST["title"]."'";$content = "'".$_POST["content"]."'";$current_time = (int) time();
//连接数据库 
try {$conn = mysqli_connect('localhost:3306','root','pasd','ctf');if (!$conn) {throw new mysqli_sql_exception(mysqli_connect_error());}
}//try 
catch (mysqli_sql_exception $e) {echo 'MySQL connection error: ' . $e->getMessage();
}//catch//如果连接成功了
if($conn){$sql = "INSERT INTO comments(id,title,comment) VALUES ($current_time,$title,$content)";if (mysqli_query($conn, $sql)) {echo "Data inserted successfully";} else {echo "Error: " . $sql . "<br>" . mysqli_error($conn);}echo "Post successfully submitted!";//关闭数据库连接mysqli_close($conn);
}//if($conn)
}
?>

http://www.ppmy.cn/news/66121.html

相关文章

Python——pyqt5的计算器(源码+打包)

目录 一、效果图 二、源码 三、如何打包 四、如何减小打包程序大小&#xff08;方法1&#xff09; 五、如何减小打包程序大小&#xff08;方法2&#xff09; 学习视频 一、效果图 只是单纯的练手&#xff0c;然后再学习一下如何打包 二、源码 calculator_UI.zip - 蓝奏云…

7.外观模式C++用法示例

外观模式 一.外观模式1.原理2.特点3.外观模式与装饰器模式的异同4.应用场景C程序示例 一.外观模式 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了一个简单的接口&#xff0c;隐藏了一个或多个复杂的子系统的复杂性&#xff0c;并使…

宏任务、微任务在时间循环中的执行

如何描述事件循环&#xff0c;及里面宏任务、微任务的执行过程 事件循环相关描述事件循环流程图案例案例代码案例解析 事件循环相关描述 为什么有事件循环 解决js单线程工作&#xff0c;会堵塞程序的问题 单线程任务类型 同步任务&#xff1a;在主线程上排队&#xff0c;直接执…

南京邮电大学数据库实验一(SQL语言)

文章目录 一、 实验目的和要求二、实验环境(实验设备)三、实验原理及内容1、了解并掌握SQL*Plus环境的使用2、用SQL的DDL语句图书管理系统创建基表3、为基表“读者”补充定义&#xff1a;职称只能取初级、中级、高级之一。4、用SQL的DML语句向上述基表中增加、修改和删除数据5、…

MySQL数据库——MySQL修改存储过程(ALTER PROCEDURE)

在实际开发过程中&#xff0c;业务需求修改的情况时有发生&#xff0c;所以修改 MySQL 中的存储过程是不可避免的。 MySQL 中通过 ALTER PROCEDURE 语句来修改存储过程。下面将详细讲解修改存储过程的方法。 MySQL 中修改存储过程的语法格式如下&#xff1a; ALTER PROCEDURE…

InnoDB线程模型

新版本结构演变 MySQL 5.7 版本 将 Undo日志表空间从共享表空间 ibdata 文件中分离出来&#xff0c;可以在安装 MySQL 时由用户自行指定文件大小和数量增加了 temporary 临时表空间&#xff0c;里面存储着临时表或临时查询结果集的数据Buffer Pool 大小可以动态修改&#xff0…

【最新可用】chatGPT镜像网站国内使用,免费稳定!

新建了一个网站 https://ai.weoknow.com/ 每天给大家更新可用的国内可用chatGPT 2023.5.8新增一个 ChatGPT 国内免翻版 【网站名称】&#xff1a;Chat GPT Ai 【使用环境】&#xff1a;移动端/电脑网页端 ChatGPT是一款功能强大的免费在线聊天机器人&#xff0c;具有人工智能…

Java分布式事务(十八)

文章目录 🔥最终一致性分布式事务解决方案_什么是最大努力通知型分布式事务🔥最大努力通知型分布式事务_最大努力通知与可靠消息最终一致性的区别🔥最大努力通知型分布式事务解决方案🔥最大努力通知型分布式事务_案例业务说明🔥最大努力通知型分布式事务实战_实现充值…