【渗透测试】VulnHub-IMF: 1

VulnHub-IMF: 1渗透思路

参考文章:VulnHub-IMF: 1渗透测试详细流程
参考文章:VulnHub-IMF: 1渗透测试详细流程

渗透思路
第一步,还是nmap扫ip,端口,开放80端口,访问web页面,发现有个页面是.php,查看源代码,找到第一个base64加密的flag。
又发现是一些base64加密的文件,解密一下,找到第二个flag。又发现第二个flag又是base64加密的。
解密后是一个文件名,访问一下,是一个登陆页面。
在前一个IMF页面发现了三个用户名,尝试使用这三个,抓包将pass字段改为pass[](具体原理见下),然后随便输入,登陆成功。
找到第三个flag,base64解密,显示continueTOcms,应该是IMFcms的一个漏洞吧
登陆进去查找信息,发现是一个cms.php文件。
抓包,将http包保存下来利用sqlmap -r 注入
输入命令:sqlmap -r dayusql --risk=3 --level=5 --dbs --dump --batch --threads=10(参数详解见下)
看到底层的jpg文件,找到falg4,继续base64解密,发现一个文件上传页面。使用weevely(详细介绍见下)进行文件上传提权。
查找名字里包含agent的文件夹,保存到/dev/null中:find / -name agent &>/dev/null
利用二进制py修改exp进行提权
将文件写入本地agentsploit.py中

小知识点

一、php中使用url传递数组的方法

在这里插入图片描述

在这里插入图片描述

不知道后端源代码是什么,但可以确定数组可以绕过。这里直接将pass改为pass[]就可以成功登录了

数组绕过,主要原理就是false=false(null=null)。

PHP中若使用ereg(只能处理字符),而这里是数组,所以返回的是null,三个等号的时候不会进行类型转换。所以null不等于false。比如出现以下代码

<?php
$flag = "flag";

if (isset ($_GET['password'])) {
if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
echo 'You password must be alphanumeric';
else if (strpos ($_GET['password'], '--') !== FALSE)
die('Flag: ' . $flag);
else
echo 'Invalid password';
}
?>

数组绕过主要出现在以下地方

md5(array()) = null
sha1(array()) = null    
ereg(pattern,array()) = null vs preg_match(pattern,array) = false
strcmp(array(), "abc") = null
strpos(array(),"abc") = null

二、sqlmap用到的参数理解

-r +文件名:可以将一个post请求方式的数据包保存在一个txt中,sqlmap会通过post方式检测目标。

--sql-file=SQLFILE: 执行一个给定文件中的sql语句

--risk:用于指定检测级别,有 1~5 共 5 级。默认为1,表示做最少的检测,相应的,5 级表示 做最多的检测。

--level:有 1~3 共 3 级。

  1. 默认风险等级为 1,此等级在大多数情况下对测试目标无害。
  2. 风险等级 2 添加了基于时间的注入测试
  3. 等级 3 添加了 OR 测试,若注入点为 update 会对数据库进行改变,因此存在很大风险。

--dump :查询指定范围的全部数据

--batch :批处理,在检测过程中会问用户一些问题,使用这个参数统统使用默认值。

--thread=线程数:设置同时发送多个请求的多线程( 0 ~ 10 )。

三、文件上传提权

四、缓冲区溢出

常用工具

一、weevely:(Linux菜刀)php webshell的安全测试工具

分五个板块:weevely生成shell文件、weevely连接后台、weevely信息探测、weevely文件操作、weevely审计

  • 生成shell文件命令:weevely generate 密码 路径 文件名
  • 上传至靶机
  • 连接shell文件命令:weevely shell文件地址 密码

参考文章:https://www.cnblogs.com/forforever/p/12674656.html

二、ltrace:跟踪进程调用库函数的情况工具

kalli不自带,使用命令:apt install ltrace进行安装
在这里插入图片描述

ltrace命令 是用来跟踪进程调用库函数的情况。

语法

ltrace [option ...] [command [arg ...]]

选项

-a 对齐具体某个列的返回值。
-c 计算时间和调用,并在程序退出时打印摘要。
-C 解码低级别名称(内核级)为用户级名称。
-d 打印调试信息。
-e 改变跟踪的事件。
-f 跟踪子进程。
-h 打印帮助信息。
-i 打印指令指针,当库调用时。
-l 只打印某个库中的调用。
-L 不打印库调用。
-n, --indent=NR 对每个调用级别嵌套以NR个空格进行缩进输出。
-o, --output=file 把输出定向到文件。
-p PID 附着在值为PID的进程号上进行ltrace。
-r 打印相对时间戳。
-s STRLEN 设置打印的字符串最大长度。
-S 显示系统调用。
-t, -tt, -ttt 打印绝对时间戳。
-T 输出每个调用过程的时间开销。
-u USERNAME 使用某个用户id或组ID来运行命令。
-V, --version 打印版本信息,然后退出。
-x NAME treat the global NAME like a library subroutine.(求翻译)

常见用法:

  • 不带参数
    在这里插入图片描述

还有两个没用到过的用法

  • 输出调用时间开销:
[guest@localhost tmp]$ ltrace -T ./a.out
__libc_start_main(0x80484aa, 1, 0xbf81d394, 0x8048550, 0x8048540 <unfinished ...>
printf("no1:%d \t no2:%d \t diff:%d\n", 10, 6, 4no1:10 no2:6 diff:4 ) = 24 <0.000972>
printf("no1:%d \t no2:%d \t diff:%d\n", 9, 7, 2no1:9 no2:7 diff:2 ) = 23 <0.000155>
printf("no1:%d \t no2:%d \t diff:%d\n", 8, 8, 0no1:8 no2:8 diff:0 ) = 23 <0.000153>
--- SIGFPE (Floating point exception) ---
+++ killed by SIGFPE +++
  • 显示系统调用:
[guest@localhost tmp]$ ltrace -S ./a.out
SYS_brk(NULL) = 0x9e20000
SYS_access(0xa4710f, 4, 0xa4afc0, 0, 0xa4b644) = 0
SYS_open("/etc/ld.so.preload", 0, 02) = 3
SYS_fstat64(3, 0xbfbd7a94, 0xa4afc0, -1, 3) = 0
SYS_mmap2(0, 17, 3, 2, 3) = 0xb7f2a000
SYS_close(3) = 0
SYS_open("/lib/libcwait.so", 0, 00) = 3
SYS_read(3, "\177ELF\001\001\001", 512) = 512
SYS_fstat64(3, 0xbfbd76fc, 0xa4afc0, 4, 0xa4b658) = 0
SYS_mmap2(0, 4096, 3, 34, -1) = 0xb7f29000
SYS_mmap2(0, 5544, 5, 2050, 3) = 0x423000
SYS_mmap2(0x424000, 4096, 3, 2066, 3) = 0x424000
.............省去若干行
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CEEMD分解是一种对非线性和非平稳信号进行分解的方法,通过将原始信号分解成多个固有模态函数(IMF)来获得信号的时频特征。IMF分量相关系数用于描述不同分量之间的相关性,通过计算不同IMF分量之间的相关系数可以了解不同分量之间的相互作用。信息熵是用于评估信号复杂度和不确定性的指标,用于描述信号的信息量和随机性。在CEEMD分解中,通过计算每个IMF分量的信息熵特征,可以揭示每个分量的信息量大小和对原始信号的重要性。 CEEMD分解通过迭代的方式将原始信号分解成多个IMF分量,每个分量都具有不同的频率和振幅。通过计算不同IMF分量之间的相关系数,可以了解不同分量之间的相关性。相关系数的取值范围为-1到1,数值越接近1表示两个分量正相关,数值越接近-1表示两个分量负相关,数值为0表示两个分量不相关。通过分析不同分量之间的相关系数,可以了解信号中不同频率和振幅的相互作用情况。 信息熵是一个用于度量信号复杂度和不确定性的指标。在CEEMD分解中,通过计算每个IMF分量的信息熵特征,可以获得每个分量的信息量大小。信息熵的计算方式是对每个分量的概率密度函数进行求解,其数值越大表示分量的复杂度和不确定性越高,数值越小表示分量的信息量越少。通过分析每个分量的信息熵特征,可以揭示每个分量对原始信号的贡献和重要性。 综上所述,CEEMD分解-IMF分量相关系数-信息熵特征三者相互关联,在CEEMD分解中,通过计算IMF分量之间的相关系数和每个分量的信息熵特征,可以了解信号的时频特征、不同分量之间的相关性以及每个分量对原始信号的贡献和重要性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃_早餐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值