攻防世界 web进阶区 warmup
打开网页,就给了我们一个笑脸。。。。。。。
检查网页源代码,发现文件source.php
尝试显示该文件(source.php)
出现了一些代码,进行代码审计,可以传入一个参数file,post和get都可以,同时需要是字符型的。还定义了一个emmm类,出现了一个新的文件hint.php,通过file参数请求这个文件看看。得到了flag的相关信息。
可以知道,文件不在当前目录下,尝试目录穿越看看,构造的payload为:
?file=../../../../ffffllllaaaagggg
可以看到,并没有成功
再次对代码进行审计,发现了mb_strpos()函数的存在,这个函数返回了?第一次出现的位置,并且让page截取了从第一个字符到?之前的字符串。所以,我们需要构造hint.php?或者source.php?这样的file参数,后面跟我们的flag文件路径。进行目录穿越的时候,…/可以多尽可能地多一点,4个以上才会返回flag,该文件可能在根目录下,其他大佬都说此处地flag复写了4次,所以最起码要4个,这个思路我个人觉得挺离谱地。最终构造的payload为:
?file=hint.php?/../../../../../ffffllllaaaagggg
得到flag为:flag{25e7bce6005c4e0c983fb97297ac6e5a}