การทดสอบความปลอดภัย - บัฟเฟอร์ล้น
บัฟเฟอร์ล้นเกิดขึ้นเมื่อโปรแกรมพยายามจัดเก็บข้อมูลในพื้นที่จัดเก็บข้อมูลชั่วคราว (บัฟเฟอร์) มากกว่าที่ตั้งใจจะเก็บไว้ เนื่องจากบัฟเฟอร์ถูกสร้างขึ้นเพื่อให้มีข้อมูลจำนวน จำกัด ข้อมูลเพิ่มเติมสามารถล้นไปยังบัฟเฟอร์ที่อยู่ติดกันได้จึงทำให้ข้อมูลที่ถูกต้องที่เก็บอยู่ในนั้นเสียหาย
ตัวอย่าง
นี่คือตัวอย่างคลาสสิกของบัฟเฟอร์ล้น แสดงให้เห็นถึงการล้นของบัฟเฟอร์อย่างง่ายที่เกิดจากสถานการณ์แรกที่อาศัยข้อมูลภายนอกเพื่อควบคุมพฤติกรรม ไม่มีวิธีการ จำกัด จำนวนข้อมูลที่ผู้ใช้ป้อนและลักษณะการทำงานของโปรแกรมขึ้นอยู่กับจำนวนอักขระที่ผู้ใช้ใส่ไว้ภายใน
...
char bufr[BUFSIZE];
gets(bufr);
...
Hands ON
Step 1- เราจำเป็นต้องเข้าสู่ระบบด้วยชื่อและหมายเลขห้องเพื่อเข้าถึงอินเทอร์เน็ต นี่คือภาพรวมสถานการณ์
![](https://post.nghiatu.com/assets/tutorial/security_testing/images/buffer_overflow.jpg)
Step 2 - เราจะเปิดใช้งาน "Unhide hidden form fields" ใน Burp Suite ดังที่แสดงด้านล่าง -
![](https://post.nghiatu.com/assets/tutorial/security_testing/images/buffer_overflow1.jpg)
Step 3- ตอนนี้เราส่งข้อมูลในช่องชื่อและหมายเลขห้อง นอกจากนี้เรายังทดลองและฉีดตัวเลขจำนวนมากในช่องหมายเลขห้อง
![](https://post.nghiatu.com/assets/tutorial/security_testing/images/buffer_overflow2.jpg)
Step 4- ฟิลด์ที่ซ่อนอยู่จะแสดงดังที่แสดงด้านล่าง เราคลิกยอมรับเงื่อนไข
![](https://post.nghiatu.com/assets/tutorial/security_testing/images/buffer_overflow3.jpg)
Step 5 - การโจมตีประสบความสำเร็จเนื่องจากบัฟเฟอร์ล้นมันเริ่มอ่านตำแหน่งหน่วยความจำที่อยู่ติดกันและแสดงต่อผู้ใช้ดังที่แสดงด้านล่าง
![](https://post.nghiatu.com/assets/tutorial/security_testing/images/buffer_overflow4.jpg)
Step 6- ตอนนี้ให้เราเข้าสู่ระบบโดยใช้ข้อมูลที่แสดง หลังจากบันทึกข้อความต่อไปนี้จะปรากฏขึ้น -
![](https://post.nghiatu.com/assets/tutorial/security_testing/images/buffer_overflow45.jpg)
กลไกการป้องกัน
- การตรวจสอบโค้ด
- การฝึกอบรมนักพัฒนา
- เครื่องมือคอมไพเลอร์
- การพัฒนาฟังก์ชัน Safe
- การสแกนเป็นระยะ