打开题目php代码映入眼帘,看到有提示版本,应该是版本漏洞
是个判断数组强等于,又要首元素不等,然后正则要求整个字符串都是数字
搜寻php5.5.9版本漏洞,有关php数组key溢出,看了大佬们的解释,有点明白,又有点不明白先放payload
stuff[4294967296]=admin&stuff[1]=user&num=123
按照询问大佬的解释和网上查阅的资料,我的理解是计算机操作系统是32位的,那它最多的就是[2^31],这里的[4294967296=2 ^32 ]
所以就会存在溢出也会绕过第二个stuff[0] !='admin'
的条件,这样继续执行下面的语句
burp抓包执行ls -a /
命令查看根目录下所有文件
看到flag文件,答案近在咫尺,但是flag被ban了,尝试了各种绕过都不太行(其实是我太菜了,想不到),就想着用什么能代替,去查linux命令
stuff[4294967296]=admin&stuff[1]=user&num=123%0als -i /
查看根目录下所有文件的编号,知道flag的编号就可以…(嘿嘿)
虽然cat被ban了,但是tac也是一样的,然后利用内联执行命令 “寻找编号为38803151的文件并查看”
stuff[4294967296]=admin&stuff[1]=user&num=123%0atac `find / -inum 38803151`
拿到flag:cyberpeace{2299530786c3ee4b4b11a0751e6cad73}