ARBITRARY FILE UPLOAD#3

ARBITRARY FILE UPLOAD#3
หลังจากที่เราทราบกันแล้วว่าการ upload นั้นมีความเป็นไปได้ที่จะถูกนำไปใช้ในทางที่ผิด และการ filter ไม่ดีก็จะทำให้ application ยังมีช่องโหว่อยู่เช่นกัน
โดยในหัวข้อนี้เราจะมีการ bypass เพิ่มเติมครับ โดยในหัวข้อนี้จะมีการ filter เพิ่มเติมเป็น
$uploaded_name = $_FILES['uploaded']['name'];
$uploaded_ext  = substr($uploaded_name, strrpos($uploaded_name,'.') + 1);
$uploaded_size = $_FILES['uploaded']['size'];
$uploaded_tmp  = $_FILES['uploaded']['tmp_name'];

if((strtolower($uploaded_ext)=="jpg"||strtolower($uploaded_ext)=="jpeg"||strtolower($uploaded_ext)=="png")&&($uploaded_size<100000)&&getimagesize( $uploaded_tmp))
โดยเป็นการตรวจสอบว่าไฟล์มีนามสกุลเป็น jpg, jpeg, png หรือไม่ และ upload size น้อยกว่า 100000 byte สุดท้ายคือการเช็คด้วย function getimagesize ซึ่งเป็น function สำหรับการตรวจสอบขนาดของรูปภาพนั้นๆว่ามีขนาดไหร่ ซึ่งถูกนำมาใช้เพื่อตรวจสอบว่าเป็นรูปภาพจริงหรือไม่
ซึ่งหาก upload โดยตรงหรือแก้ไขแบบที่ได้ทำใน fileupload2 จะพบว่ามันไม่สามารถ upload ได้เพราะมันไม่เกี่ยวกับ Content-Type ที่ upload ขึ้นไปอีกต่อไปครับ

Comments

Popular Posts