Rootkit学习(一)
简介&内核理解
“A rootkit is a collection of computer software, typically malicious, designed to enable access to a computer or an area of its software that is not otherwise allowed (for example, to an unauthorized user) and often masks its existence or the existence of other software.”
Rootkit 是一组计算机软件,通常是恶意软件,旨在访问计算机或其软件的某个区域(例如,未经授权的用户),并且通常会掩盖其自身或其他软件的存在。
在内核Rootkit中,编写的代码将通过编写的内核模块以内核级权限运行,其核心技术是函数挂钩(function hooking)
这会在内存中找到需要劫持的内核函数(例如列出目录、进程通信等关键操作);然后实现自定义的恶意版本,同时保留原始函数的副本,以维持系统正常功能;接着通过 ...
Linux中隐藏进程的方法
用户态隐藏进程名伪装 (prctl结合argv[0])在网上看到一个 prctl 函数可以修改当前的进程名,使用方法则在当前逻辑添加代码即可
1234567891011121314151617#include <cstdio>#include <cstdlib>#include <cstring>#include <unistd.h>#include <sys/prctl.h>int main(int argc, char* argv[], char *envp[]){ const char *new_title = "prctl_new_name"; prctl(PR_SET_NAME, new_title, NULL, NULL, NULL); while (true) { sleep(2); } return 0;}
但是好像不起作用
首先我们需要知道的是,ps和top的底层逻辑是读取并遍历/proc目录下的 ...
LitCTF 2025 Web
Web星愿信箱
看起来有点像模板注入,看起来数字被过滤掉了,一些跟配置文件相关的参数也被过滤掉了
首先是会匹配字母,否则返回:愿望需要包含文字内容噢)~
然后匹配到连续的两个花括号,返回:愿望被神秘力量屏蔽了~
这里两个{% if ... %}1{% endif %}和{%print(......)%}都可以用,此时数字没有过滤
后续发现只过滤了双花括号还有cat
1{%print(lipsum.__globals__.__builtins__['__import__']('os').popen('more /flag').read())%}
nest_js根据长度爆破出弱密码
然后就出了…
easy_file
依旧是弱密码爆破
1password
怀疑是否有nginx解析漏洞?尝试一下
制作图片🐎并上传,这里不能上传png图片,换成jpg试试
发现是过滤了php,可以改成
1<?= @eval($_POST['cmd ...
ThinkPHP 5.1.x 反序列化漏洞
之前护网遇到好几个Thinkphp的框架,借此来学习其中一个漏洞
__destruct()作为入口点我们找到Whindows.php的__destruct()魔术方法作为链子的入口,并跟进removeFiles()函数
这里的$filename变量是一个string类型,当我们传入一个对象到期望接收字符串的函数时,PHP会自动尝试将该对象转换为字符串。这时会触发对象的 __toString() 魔术方法
寻找触发__toString的关联类因此我们再次找到Conversion.php中的__toString方法
但需要注意的是该方法的Conversion是一个trait
trait关键字的作用:
trait是PHP从5.4.0版本开始引入的一种代码复用机制
它允许开发者创建一组方法,这些方法可以被不同的类引入使用
trait的主要目的是解决PHP单继承的限制,实现代码复用
trait只是一组方法的集合,不是完整的类,因此trait不能被实例化
正确的触发方式是
1234567class SomeModel extends \think\Model { ...
Hospital靶机渗透
你将扮演一名渗透测试工程师,被派遣去测试某家医院的网络安全性。你的目标是成功获取所有服务器的权限,以评估公司的网络安全状况。该靶场共有 4 个flag,分布于不同的靶机
flag01
发现22端口和8080端口
22端口的SSH密钥强度较高,暂时不看;8080端口运行着Apache Tomcat的Web服务,标题为医疗管理后台
UDP扫描结果价值不大,漏洞扫描
Spring Boot Actuator端点暴露发现CVE-2010-0738 JBoss漏洞,但估计是版本匹配不上,POC无法利用;还有一个是Spring Boot Actuator端点暴露,检测到/actuator/路径
这篇文章可以看到原生端点的一些作用Springboot之actuator配置不当的漏洞利用
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172{ "_links ...
一些题目合集
NewYearCTF 2025Web新年快乐,红包拿来
Python特性
先抓包看看规则
只接受浮点型数字,一阵捣鼓后发现了路由提示
得到源码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354from fastapi import FastAPI, Requestfrom fastapi.responses import HTMLResponsefrom jinja2 import Environment, BaseLoaderimport uvicornimport osapp = FastAPI()FLAG = os.getenv('FLAG', 'flag{test}')class SafeEnvironment(Environment): def __init__(self): super().__init__(loader=BaseLoad ...
Mysql数据库的利用
在这之前只知道数据库一般的写入webshell利用,但受限制条件在于需要知道绝对路径,网站路径有写入权限以及受secure-file-priv参数限制,因此这篇文章将从其它角度来扩大对数据库的攻击面
获取一般的webshell权限我们依旧从getshell开始
直接写入webshell查询路径与查看 secure_file_priv 信息例如现在有如下sql查询语句
1SELECT * FROM testtable WHERE `name` = '参数值';
查找绝对路径SELECT @@basedir;
1SELECT * FROM testtable WHERE `name` = 'Bob' AND ascii(substr((@@basedir),1,1))>60 #';
1SELECT * FROM testtable WHERE `name` = 'Bob' UNION SELECT 1,2,3,@@basedir #';
查看 secure_file_priv 配置SHOW GLOBAL ...
Pickle反序列化
什么是Pickle?
模块pickle实现了对一个 Python 对象结构的二进制序列化和反序列化。 “pickling” 是将 Python 对象及其所拥有的层次结构转化为一个字节流的过程,而 “unpickling” 是相反的操作,会将(来自一个 binary file 或者 bytes-like object 的)字节流转化回一个对象层次结构。 pickling(和 unpickling)也被称为“序列化”, “编组” 或者 “平面化”。而为了避免混乱,此处采用术语 “封存 (pickling)” 和 “解封 (unpickling)”。
提到pickle,那就离不开opcode,在Pickle的上下文中,opcode(操作码)是Pickle字节码的基本指令。Pickle的序列化数据实际上是由一系列opcode组成的程序,这些opcode告诉Pickle解释器如何重建原始对象。每个opcode是一个字节(或更长),对应一个特定的操作
1234BININT1:将一个1字节的整数压入栈GLOBAL:导入一个全局对象(如函数或类)REDUCE:调用可调用对象并组合参数STOP:结束 ...
2023巅峰极客BabyURL
2023巅峰极客 BabyURL
附件下载
1docker run -it -d -p 12345:8080 -e FLAG=flag{8382843b-d3e8-72fc-6625-ba5269953b23}" lxxxin/dfjk2023_babyurl
这道题有两种解法,一个是SignedObject二次反序列化,一个是绕过黑名单打TemplatesImpl,最近在学习后者因此这里只提及后者做法
拿到反编译后的代码可以看到整体结构比较简单
123456789101112131415161718@GetMapping({"/hack"}) @ResponseBody public String hack(@RequestParam String payload) { byte[] bytes = Base64.getDecoder().decode(payload.getBytes(StandardCharsets.UTF_8)); ByteArrayInpu ...
一些关于计网的知识
其实自接触Web安全以来,对计算机网络知识一点不了解那到不至于,只是说这学期开始系统性学习计算机网络,因此有了此文章,同时也供自己时常复习
IP协议基础在OSI模型中,IP协议属于网络层。网络层的主要作用是负责数据包从源设备到目的设备的传递(P2P通信)。它通过路由选择和逻辑寻址来实现数据包的传输。
数据链路层与网络层网络层主要负责选择数据包从源设备到目的设备的最佳路径,实现不同子网之间的通信;
数据链路层在物理层提供的服务基础上,负责将数据可靠地传输到相邻节点的目标机网络层;
因此,网络层依赖数据链路层来实现相邻设备之间的数据传输
IP寻址在IP寻址中,设备通过IP地址来确定数据包的发送和接收。IP地址由网络部分和主机部分组成,网络部分用于路由控制,而主机部分则用于在同一网络内区分不同的设备。因此TCP/IP通信中所有主机或路由器必须设定自己的IP地址
路由控制路由控制是指在网络中根据IP地址决定数据包的传输路径的过程
路由控制主要通过以下步骤实现:
路由表查找:当设备需要发送数据包时,它会根据目的IP地址在路由表中查找匹配的记录。路由表记录了网络地址与下一跳路由器的映射关系 ...














