前言
等比赛结束之后才敢来看一下题目??。找到了复现环境:
https://github.com/m0xiaoxi/CTF_Web_docker/tree/master/TCTF2019/Wallbreaker_Easy
使用这个环境如果发现就是上传不了文件,查看/var/log/nginx/error.log
发现错误提示是权限不够的话,需要在/tmp
目录下执行chown www-data .
,添加www-data
用户…
参考了几篇相关的帖子(就觉得啊…这些大佬怎么什么都能想到…)。
- https://www.freebuf.com/articles/web/192052.html
- https://xz.aliyun.com/t/4589
- https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD
在这之前还看了LD_PRELOAD
的相关帖子。这个东西像是已经出来很久了。
看到还有其他的方法来做这个题目。先把通过LD_PRELOAD
做的方法记录下来,再接着去看其他方法。
对了…前几天刚看了一个利用imap_open()
函数来绕过对disable_function
的限制,这个题目恰好也是绕过disable_function
的技巧,搞完之后可以整理总结一下其他的绕过技巧还有哪些。((⊙o⊙)我总是在事前想的很好)在禁用的函数里也写了imap_open()
。(知识积累是多么重要)
WriteUp
LD_PRELOAD
这个环境变量,在php
需要起新进程的时候会被查看,然后会根据这个变量的内容,去加载共享对象(.so
文件,就类似于windows
下的.dll
文件)。
上面那个freebuf
的帖子里详细描述了这种攻击方式的流程,在这个题目里,只是用了另外一个起新进程的函数&