南邮CTF:WEB 上传绕过

条件:

URL:http://teamxlc.sinaapp.com/web5/21232f297a57a5a743894a0e4a801fc3/index.html

提示:猜猜代码怎么写的


过程

  1. 这道体似乎似曾相识,以前做过,但是忘了。。
  2. 随便上传一个之后,要求我上传php后缀的文件

    Array ( [0] => .png [1] => png ) Upload: demo.png
    Type: image/png
    Size: 0 Kb
    Stored in: ./uploads/8a9e5f6a7a789acb.phparray(4) { [“dirname”]=> string(9) “./uploads” [“basename”]=> string(8) “demo.png” [“extension”]=> string(3) “png” [“filename”]=> string(4) “demo” }
    必须上传成后缀名为php的文件才行啊!

  3. 再上传php文件

    Array ( [0] => .php [1] => php ) 不被允许的文件类型,仅支持上传jpg,gif,png后缀的文件

  4. 然后我就不会做了,百度了一下


思路

  • 根据两次的错误代码都有Array ( [0] => .png [1] => png )这样的一步
  • 然而上传php后缀的文件之后就没有第一个错误提示的后半段了,可以看出:

后台先校验上传文件是否为png格式,在校验是否为php

  • 再观察第一个错误信息,他在后面的Stored,通过根据./uploads目录下的basename进行识别的。这个basename不会读取被0x00截断后的字符
  • 故可以通过0x00截断

你可能感兴趣的:(CTF)