CTFHub 技能树 LD_PRELOAD
百度一下LD_PRELOAD:允许你定义在程序运行前优先加载的动态链接库。这个功能主要就是用来有选择性的载入不同动态链接库中的相同函数。通过这个环境变量,我们可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库。一方面,我们可以以此功能来使用自己的或是更好的函数(无需别人的源码),而另一方面,我们也可以以向别人的程序注入程序,从而达到特定的目的。
总的来说就是在调用某个函数的时候,有用到某些库,这些的库地址就由这个变量来控制,就类似于windows的系统变量,会先在当前目录下寻找,如果没有就去系统变量下的路径去启动。
我们可以通过改变LD_PRELOAD的值,使其指向我们自定义的库,就可以覆盖原本定义的库函数。
在绕过disable_functions中,使用LD_PRELOAD经常用到,尤其是通过mail和error_log函数执行。
不多说,直接做题
1.打开题目,首先提示可以用蚁剑连接,连接上以后,发现在根目录下有一个flag文件,但是打开后空白,终端命令执行也不行
做题的时候一开始试试手工绕过,这么也搞不定,后来是发现system命令里少了空格。后来时间快到了,直接用插件,好使,直接拿到权限,可以命令执行,但是cat /flag显示Permission denied,试到tac /flag可以了,拿到flag。
2.从github复现了题目,在尝试一下手工绕过
传入shell.php,新建一个test.php,用来接收返回的结果。
.antproxy.php是插件上传的木马文件,可以忽略。