写在前面
文章偏小白,只是自己学习过程中一个总结。
正文
一、Low级别
发现对上传的文件完全没有限制,而且给出了上传文件保存的位置,直接上传一句话就可以。
二、medium级别
关键点在这里:
if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
( $uploaded_size < 100000 ) ) {
对文件类型和大小进行了限制,但是$_FILES[‘uploaded’][‘name’]
这里没有任何处理,所以上传php文件,抓包修改它的文件类型,也就是Content-Type
值为image/jpeg
成功上传了php文件。
三、High级别
把关键地方拎出来:
$uploaded_ext = substr( $uploaded_name, strrpos( $uploaded_name, '.' ) + 1);
用到了substr
函数对字符串进行分割,同时用strpos
函数匹配.号最后出现的位置。
还有一个地方:
if( ( strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" )