使用K55实现Linux x86_64进程注入

关于K55
K55是一款 Payload注入工具,该工具可以向正在运行的进程注入x86_64 shellcode Payload。该工具使用现代C++11技术开发,并且继承了某些传统的C Linux函数,比如说ptrace()等等。在目标进程中生成的shellcode长度为27个字节,并且能够在目标进程的地址空间中执行/bin/sh(生成一个Bash shell)。将来,我们还会支持允许用户通过命令行参数输入自己的shellcode。

工具安装
广大研究人员可以使用下列命令将该项目源码克隆至本地,然后完成工具的安装、构建与配置:
git clone https://github.com/josh0xA/K55.git
cd K55
chmod +x build-install.sh
./build-install.sh

K55使用
Usage: ./K55
上述命令中的process-name进程名可以是任何带有r-xp或execstack权限的Linux进程。

测试
测试1 - 打开一个命令行窗口,切换至K55/目录下,然后运行下列命令:
./k55_example_process/k55_test_process
测试2 - 打开另一个命令行窗口,通过下列命令运行注入器:
sudo ./K55 k55_test_process
K55使用样例
当K55的shellcode注入器以root权限运行之后,将会在k55_test_process中生成一个shell。

向给定进程注入Payload:
在这里插入图片描述

工具限制
很明显,针对ptrace的调用肯定不够隐蔽。因此,还是会有一些应用可以限制K55的功能。不过,对于安全测试来说,我们还需要确保目标应用程序启用了execstack。比如说,如果我在gdb上进行测试,那么在注入之前,我需要运行下列命令:
sudo execstack -s /usr/bin/gdb
如果你是用的是Arch Linux,你可以直接在AUR中找到execstack。

项目地址
K55:https://github.com/josh0xA/K55

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是将单元矩阵组装成6*6的矩阵的示例代码,假设梁的几何和材料参数如下: ```matlab E = 2.1e11; % 弹性模量 G = 0.8e11; % 剪切模量 rho = 7800; % 密度 L = 2; % 梁的长度 d = 0.1; % 梁的直径 A = pi*(d/2)^2; % 梁的横截面积 I = pi*(d/2)^4/4; % 梁的截面惯性矩 ``` 我们可以先计算出单元刚度矩阵和质量矩阵,然后将其组装成6*6的矩阵。这里假设每个单元有2个节点,每个节点有3个自由度(x、y方向的位移和转角),因此单元刚度矩阵和质量矩阵的大小均为6*6。我们使用类似上面的循环遍历方法,将单元矩阵组装成6*6的全局矩阵。 ```matlab % 计算单元刚度矩阵和质量矩阵 k11 = E*A/L; k12 = 0; k13 = 0; k14 = -E*A/L; k15 = 0; k16 = 0; k22 = 12*E*I/L^3; k23 = 6*E*I/L^2; k24 = 0; k25 = -12*E*I/L^3; k26 = 6*E*I/L^2; k33 = 4*G*A/L; k34 = 0; k35 = 0; k36 = -4*G*A/L; k44 = E*A/L; k45 = 0; k46 = 0; k55 = 12*E*I/L^3; k56 = -6*E*I/L^2; k66 = 4*G*A/L; K_e = [k11, k12, k13, k14, k15, k16; k12, k22, k23, k24, k25, k26; k13, k23, k33, k34, k35, k36; k14, k24, k34, k44, k45, k46; k15, k25, k35, k45, k55, k56; k16, k26, k36, k46, k56, k66]; m11 = rho*A*L/3; m12 = 0; m13 = 0; m14 = rho*A*L/6; m15 = 0; m16 = 0; m22 = rho*I*L/15; m23 = rho*I*L/30; m24 = 0; m25 = -rho*I*L/15; m26 = rho*I*L/30; m33 = rho*A*L/3; m34 = 0; m35 = 0; m36 = rho*A*L/6; m44 = rho*A*L/3; m45 = 0; m46 = 0; m55 = rho*I*L/15; m56 = -rho*I*L/30; m66 = rho*A*L/3; M_e = [m11, m12, m13, m14, m15, m16; m12, m22, m23, m24, m25, m26; m13, m23, m33, m34, m35, m36; m14, m24, m34, m44, m45, m46; m15, m25, m35, m45, m55, m56; m16, m26, m36, m46, m56, m66]; % 定义全局刚度矩阵和质量矩阵的大小 N = 2; % 假设有2个节点 K = zeros(3*N, 3*N); % 初始化全局刚度矩阵 M = zeros(3*N, 3*N); % 初始化全局质量矩阵 % 循环遍历每个单元,将其贡献添加到全局刚度矩阵和质量矩阵中 for i = 1:N-1 K_i = K_e; % 第i个单元的刚度矩阵 M_i = M_e; % 第i个单元的质量矩阵 % 将第i个单元的刚度矩阵和质量矩阵添加到全局刚度矩阵和质量矩阵中 K(3*i-2:3*i+3, 3*i-2:3*i+3) = K(3*i-2:3*i+3, 3*i-2:3*i+3) + K_i; M(3*i-2:3*i+3, 3*i-2:3*i+3) = M(3*i-2:3*i+3, 3*i-2:3*i+3) + M_i; end ``` 在上面的代码中,我们首先计算出单元的刚度矩阵和质量矩阵,然后定义全局刚度矩阵和质量矩阵的大小,并初始化为零矩阵。最后,我们循环遍历每个单元,将其贡献添加到全局刚度矩阵和质量矩阵中。这样,我们就可以得到组装后的6*6全局刚度矩阵和质量矩阵了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值