แฮกเกอร์เข้ายึดเว็บไซต์ด้วย SQL Injection และ DDoS อย่างไร

Sep 28, 2025
ความเป็นส่วนตัวและความปลอดภัย
เนื้อหาที่ไม่ถูกแคช

แม้ว่าคุณจะติดตามเหตุการณ์ของกลุ่มแฮ็กเกอร์ Anonymous และ LulzSec เพียงหลวม ๆ แต่คุณคงเคยได้ยินเกี่ยวกับเว็บไซต์และบริการที่ถูกแฮ็กเช่นการแฮ็กของ Sony ที่น่าอับอาย คุณเคยสงสัยหรือไม่ว่าพวกเขาทำได้อย่างไร?

มีเครื่องมือและเทคนิคมากมายที่กลุ่มเหล่านี้ใช้และแม้ว่าเราจะไม่ได้พยายามให้คู่มือในการดำเนินการนี้ด้วยตนเอง แต่การทำความเข้าใจสิ่งที่เกิดขึ้นก็มีประโยชน์ การโจมตีสองครั้งที่คุณมักจะได้ยินเกี่ยวกับการโจมตีเหล่านี้คือ“ (กระจาย) การปฏิเสธการให้บริการ” (DDoS) และ“ SQL Injections” (SQLI) วิธีการทำงานมีดังนี้

ภาพโดย xkcd

การปฏิเสธการโจมตีบริการ

มันคืออะไร?

การโจมตีแบบ“ ปฏิเสธการให้บริการ” (บางครั้งเรียกว่า“ การปฏิเสธการให้บริการแบบกระจาย” หรือ DDoS) เกิดขึ้นเมื่อระบบในกรณีนี้เว็บเซิร์ฟเวอร์ได้รับคำขอจำนวนมากในคราวเดียวจนทรัพยากรเซิร์ฟเวอร์มีมากเกินไประบบก็จะล็อก และปิดตัวลง เป้าหมายและผลลัพธ์ของการโจมตี DDoS ที่ประสบความสำเร็จคือเว็บไซต์บนเซิร์ฟเวอร์เป้าหมายไม่พร้อมใช้งานสำหรับคำขอการเข้าชมที่ถูกต้อง

มันทำงานอย่างไร?

ตัวอย่างของการโจมตี DDoS สามารถอธิบายได้ดีที่สุด

ลองนึกภาพผู้คนนับล้าน (ผู้โจมตี) ร่วมมือกันโดยมีเป้าหมายในการขัดขวางธุรกิจของ Company X โดยการโค่นล้มคอลเซ็นเตอร์ ผู้โจมตีประสานงานกันดังนั้นในวันอังคารเวลา 9.00 น. พวกเขาทั้งหมดจะโทรไปที่หมายเลขโทรศัพท์ของ Company X เป็นไปได้มากว่าระบบโทรศัพท์ของ Company X จะไม่สามารถรองรับการโทรได้เป็นล้านครั้งในคราวเดียวดังนั้นสายที่เข้ามาทั้งหมดจะเชื่อมโยงกับผู้โจมตี ผลลัพธ์ก็คือการโทรของลูกค้าที่ถูกต้อง (เช่นการโทรที่ไม่ใช่ผู้โจมตี) ไม่สามารถผ่านได้เนื่องจากระบบโทรศัพท์เชื่อมโยงกับการจัดการสายจากผู้โจมตี ดังนั้นโดยพื้นฐานแล้ว บริษัท X อาจสูญเสียธุรกิจเนื่องจากคำขอที่ถูกต้องตามกฎหมายไม่สามารถผ่านได้

การโจมตี DDoS บนเว็บเซิร์ฟเวอร์ทำงานในลักษณะเดียวกันทุกประการ เนื่องจากแทบจะไม่มีทางทราบได้ว่าทราฟฟิกใดที่มาจากคำขอที่ถูกต้องกับผู้โจมตีจนกว่าเว็บเซิร์ฟเวอร์จะประมวลผลคำขอการโจมตีประเภทนี้จึงมีประสิทธิภาพมาก

ดำเนินการโจมตี

เนื่องจากลักษณะ "กำลังดุร้าย" ของการโจมตี DDoS คุณจำเป็นต้องมีคอมพิวเตอร์จำนวนมากที่ประสานงานกันเพื่อโจมตีในเวลาเดียวกัน การกลับมาดูตัวอย่างคอลเซ็นเตอร์ของเราสิ่งนี้ต้องการให้ผู้โจมตีทุกคนรู้ว่าจะโทรเวลา 9.00 น. และโทรตามจริงในเวลานั้น แม้ว่าหลักการนี้จะใช้ได้ผลอย่างแน่นอนเมื่อพูดถึงการโจมตีเว็บเซิร์ฟเวอร์ แต่ก็ง่ายขึ้นอย่างมากเมื่อมีการใช้คอมพิวเตอร์ซอมบี้แทนที่จะใช้คอมพิวเตอร์ที่มีคนจัดการจริง

อย่างที่คุณทราบกันดีว่ามีมัลแวร์และโทรจันหลากหลายรูปแบบซึ่งเมื่ออยู่ในระบบของคุณแล้วให้นอนเฉยๆและบางครั้งก็ "โทรศัพท์บ้าน" เพื่อขอคำแนะนำ ตัวอย่างเช่นคำแนะนำอย่างหนึ่งคือการส่งคำขอซ้ำ ๆ ไปยังเว็บเซิร์ฟเวอร์ของ Company X เวลา 9.00 น. ดังนั้นด้วยการอัปเดตตำแหน่งบ้านของมัลแวร์ที่เกี่ยวข้องเพียงครั้งเดียวผู้โจมตีเพียงคนเดียวสามารถประสานคอมพิวเตอร์ที่ถูกบุกรุกหลายแสนเครื่องเพื่อทำการโจมตี DDoS ครั้งใหญ่ได้ในทันที

ความสวยงามของการใช้คอมพิวเตอร์ซอมบี้ไม่เพียง แต่ในด้านประสิทธิภาพเท่านั้น แต่ยังรวมถึงการไม่เปิดเผยตัวตนด้วยเนื่องจากผู้โจมตีไม่จำเป็นต้องใช้คอมพิวเตอร์เลยในการโจมตี

SQL Injection Attack

มันคืออะไร?

การโจมตีแบบ“ SQL injection” (SQLI) เป็นการใช้ประโยชน์จากเทคนิคการพัฒนาเว็บที่ไม่ดีและโดยทั่วไปแล้วจะรวมกับการรักษาความปลอดภัยฐานข้อมูลที่ผิดพลาด ผลลัพธ์ของการโจมตีที่ประสบความสำเร็จอาจมีตั้งแต่การแอบอ้างเป็นบัญชีผู้ใช้ไปจนถึงการบุกรุกฐานข้อมูลหรือเซิร์ฟเวอร์ที่เกี่ยวข้อง ไม่เหมือนกับการโจมตี DDoS การโจมตีด้วย SQLI นั้นสามารถป้องกันได้อย่างสมบูรณ์และสามารถป้องกันได้อย่างง่ายดายหากมีการตั้งโปรแกรมเว็บแอปพลิเคชันอย่างเหมาะสม

ดำเนินการโจมตี

เมื่อใดก็ตามที่คุณเข้าสู่เว็บไซต์และป้อนชื่อผู้ใช้และรหัสผ่านเพื่อทดสอบข้อมูลรับรองของคุณเว็บแอปพลิเคชันอาจเรียกใช้แบบสอบถามดังต่อไปนี้:

เลือก UserID จากผู้ใช้ WHERE UserName = 'myuser' AND Password = 'mypass';

หมายเหตุ: ค่าสตริงในแบบสอบถาม SQL ต้องอยู่ในเครื่องหมายคำพูดเดี่ยวซึ่งเป็นสาเหตุที่ปรากฏรอบค่าที่ผู้ใช้ป้อน

ดังนั้นการรวมกันของชื่อผู้ใช้ที่ป้อน (myuser) และรหัสผ่าน (mypass) จะต้องตรงกับรายการในตารางผู้ใช้เพื่อให้ส่งคืน UserID หากไม่ตรงกันจะไม่มีการส่งคืน UserID ดังนั้นข้อมูลรับรองการเข้าสู่ระบบจึงไม่ถูกต้อง แม้ว่าการใช้งานบางอย่างอาจแตกต่างกัน แต่กลไกก็ค่อนข้างเป็นมาตรฐาน

ตอนนี้เรามาดูแบบสอบถามการตรวจสอบความถูกต้องของเทมเพลตซึ่งเราสามารถแทนที่ค่าที่ผู้ใช้ป้อนในแบบฟอร์มบนเว็บ:

เลือก UserID จากผู้ใช้ WHERE UserName = '[user]' AND Password = '[pass]'

เมื่อมองแวบแรกสิ่งนี้อาจดูเหมือนเป็นขั้นตอนที่ตรงไปตรงมาและมีเหตุผลสำหรับการตรวจสอบความถูกต้องของผู้ใช้อย่างง่ายดายอย่างไรก็ตามหากมีการดำเนินการแทนที่ค่าที่ผู้ใช้ป้อนอย่างง่ายในเทมเพลตนี้จะมีความอ่อนไหวต่อการโจมตีของ SQLI

ตัวอย่างเช่นสมมติว่ามีการป้อน“ myuser’–” ในช่องชื่อผู้ใช้และป้อน“ รหัสผ่านผิด” ในรหัสผ่าน การใช้การแทนที่อย่างง่ายในแบบสอบถามเทมเพลตของเราเราจะได้รับสิ่งนี้:

เลือก UserID จากผู้ใช้ WHERE UserName = 'myuser' - 'AND Password =' ​​wrongpass '

กุญแจสำคัญของคำสั่งนี้คือการรวมสองขีด (--) . นี่คือโทเค็นความคิดเห็นเริ่มต้นสำหรับคำสั่ง SQL ดังนั้นสิ่งใดก็ตามที่ปรากฏหลังเครื่องหมายขีดกลางสองขีด (รวม) จะถูกละเว้น โดยพื้นฐานแล้วแบบสอบถามข้างต้นจะดำเนินการโดยฐานข้อมูลเป็น:

เลือก UserID จากผู้ใช้ WHERE UserName = 'myuser'

การมองข้ามที่ชัดเจนในที่นี้คือการไม่ตรวจสอบรหัสผ่าน ด้วยการรวมเครื่องหมายขีดกลางสองขีดเป็นส่วนหนึ่งของช่องผู้ใช้เราจะข้ามเงื่อนไขการตรวจสอบรหัสผ่านโดยสิ้นเชิงและสามารถเข้าสู่ระบบในฐานะ "myuser" โดยไม่ทราบรหัสผ่านที่เกี่ยวข้อง การดำเนินการจัดการแบบสอบถามเพื่อสร้างผลลัพธ์ที่ไม่ได้ตั้งใจนี้เป็นการโจมตีด้วยการฉีด SQL

เสียหายอะไรได้บ้าง?

การโจมตีด้วยการฉีด SQL เกิดจากการเข้ารหัสแอปพลิเคชันโดยประมาทและขาดความรับผิดชอบและสามารถป้องกันได้อย่างสมบูรณ์ (ซึ่งเราจะครอบคลุมในอีกสักครู่) อย่างไรก็ตามขอบเขตของความเสียหายที่สามารถทำได้ขึ้นอยู่กับการตั้งค่าฐานข้อมูล เพื่อให้เว็บแอปพลิเคชันสื่อสารกับฐานข้อมูลแบ็กเอนด์แอปพลิเคชันจะต้องให้ข้อมูลการเข้าสู่ระบบฐานข้อมูล (โปรดทราบว่านี่แตกต่างจากการล็อกอินของผู้ใช้ไปยังเว็บไซต์นั้น ขึ้นอยู่กับสิทธิ์ที่เว็บแอปพลิเคชันต้องการบัญชีฐานข้อมูลตามลำดับนี้สามารถต้องการอะไรก็ได้ตั้งแต่สิทธิ์อ่าน / เขียนในตารางที่มีอยู่ไปจนถึงการเข้าถึงฐานข้อมูลแบบเต็มเท่านั้น หากตอนนี้ยังไม่ชัดเจนตัวอย่างบางส่วนน่าจะช่วยให้เกิดความชัดเจนได้

จากตัวอย่างข้างต้นคุณจะเห็นได้ว่าโดยการป้อนตัวอย่างเช่น "youruser '-", "admin" - " หรือชื่อผู้ใช้อื่น ๆ เราสามารถเข้าสู่ไซต์ได้ทันทีในฐานะผู้ใช้นั้นโดยไม่ทราบรหัสผ่าน เมื่อเราอยู่ในระบบแล้วเราไม่รู้ว่าเราไม่ใช่ผู้ใช้คนนั้นจริงๆดังนั้นเราจึงสามารถเข้าถึงบัญชีที่เกี่ยวข้องได้โดยสมบูรณ์ สิทธิ์ฐานข้อมูลจะไม่จัดเตรียมเครือข่ายความปลอดภัยเนื่องจากโดยทั่วไปแล้วเว็บไซต์จะต้องมีสิทธิ์เข้าถึงฐานข้อมูลที่เกี่ยวข้องเป็นอย่างน้อยอ่าน / เขียน

ตอนนี้สมมติว่าเว็บไซต์มีการควบคุมฐานข้อมูลตามลำดับอย่างสมบูรณ์ซึ่งให้ความสามารถในการลบบันทึกเพิ่ม / ลบตารางเพิ่มบัญชีความปลอดภัยใหม่ ฯลฯ สิ่งสำคัญคือต้องทราบว่าบางเว็บแอปพลิเคชันอาจต้องได้รับอนุญาตประเภทนี้ ไม่ใช่เรื่องเลวร้ายโดยอัตโนมัติที่จะได้รับการควบคุมทั้งหมด

ดังนั้นเพื่อแสดงให้เห็นถึงความเสียหายที่สามารถทำได้ในสถานการณ์นี้เราจะใช้ตัวอย่างที่ให้ไว้ในการ์ตูนด้านบนโดยป้อนข้อมูลต่อไปนี้ลงในฟิลด์ชื่อผู้ใช้: "โรเบิร์ต '; ผู้ใช้โต๊ะดรอป; -". หลังจากการแทนที่อย่างง่ายแบบสอบถามการพิสูจน์ตัวตนจะกลายเป็น:

เลือก UserID จากผู้ใช้ WHERE UserName = 'Robert'; วางผู้ใช้ตาราง - 'และรหัสผ่าน =' ส่งผิด '

หมายเหตุ: อัฒภาคอยู่ในแบบสอบถาม SQL ใช้เพื่อแสดงถึงจุดสิ้นสุดของคำสั่งเฉพาะและจุดเริ่มต้นของคำสั่งใหม่

ซึ่งได้รับการดำเนินการโดยฐานข้อมูลเป็น:

เลือก UserID จากผู้ใช้ WHERE UserName = 'Robert'

วางผู้ใช้ตาราง

เช่นเดียวกับที่เราใช้การโจมตี SQLI เพื่อลบตารางผู้ใช้ทั้งหมด

แน่นอนว่าสิ่งที่แย่กว่านั้นสามารถทำได้เนื่องจากการอนุญาตของ SQL ที่อนุญาตผู้โจมตีสามารถเปลี่ยนค่าตารางการถ่ายโอนข้อมูล (หรือฐานข้อมูลทั้งหมดเอง) เป็นไฟล์ข้อความสร้างบัญชีเข้าสู่ระบบใหม่หรือแม้แต่ขโมยการติดตั้งฐานข้อมูลทั้งหมด

การป้องกันการโจมตีด้วยการฉีด SQL

ดังที่เราได้กล่าวไปแล้วหลายครั้งก่อนหน้านี้การโจมตีด้วยการฉีด SQL สามารถป้องกันได้อย่างง่ายดาย กฎสำคัญประการหนึ่งของการพัฒนาเว็บคือคุณไม่เคยเชื่อถือการป้อนข้อมูลของผู้ใช้แบบสุ่มสี่สุ่มห้าเหมือนกับที่เราทำเมื่อทำการแทนที่อย่างง่ายในข้อความค้นหาเทมเพลตด้านบน

การโจมตี SQLI ถูกขัดขวางได้ง่ายโดยสิ่งที่เรียกว่าการฆ่าเชื้อ (หรือการหลบหนี) ข้อมูลที่คุณป้อน ขั้นตอนการฆ่าเชื้อนั้นค่อนข้างเป็นเรื่องเล็กน้อยเนื่องจากโดยพื้นฐานแล้วจะจัดการกับอักขระอัญประกาศเดี่ยว (‘) แบบอินไลน์อย่างเหมาะสมซึ่งไม่สามารถใช้เพื่อยุติสตริงภายในคำสั่ง SQL ได้ก่อนเวลาอันควร

ตัวอย่างเช่นหากคุณต้องการค้นหา“ O’neil” ในฐานข้อมูลคุณไม่สามารถใช้การแทนที่แบบง่ายได้เนื่องจากเครื่องหมายคำพูดเดียวหลัง O จะทำให้สตริงสิ้นสุดลงก่อนเวลาอันควร แต่คุณล้างมันโดยใช้อักขระหลีกของฐานข้อมูลที่เกี่ยวข้อง สมมติว่าอักขระหลีกสำหรับอัญประกาศแบบอินไลน์คือนำหน้าแต่ละอัญประกาศด้วยสัญลักษณ์ \ ดังนั้น“ O’neal” จะถูกฆ่าเชื้อเป็น“ O \ 'neil”

การสุขาภิบาลอย่างง่ายนี้ช่วยป้องกันการโจมตีของ SQLI ได้มาก เพื่อเป็นตัวอย่างลองกลับไปดูตัวอย่างก่อนหน้านี้และดูคำค้นหาที่เป็นผลลัพธ์เมื่อข้อมูลที่ผู้ใช้ป้อนได้รับการฆ่าเชื้อ

myuser '- / ผิด :

เลือก UserID จากผู้ใช้ WHERE UserName = 'myuser \' - 'AND Password =' ​​wrongpass '

เนื่องจากเครื่องหมายคำพูดเดียวหลังจาก myuser ถูก Escape (หมายถึงถือว่าเป็นส่วนหนึ่งของค่าเป้าหมาย) ฐานข้อมูลจะค้นหา UserName ของ "myuser '-". นอกจากนี้เนื่องจากขีดกลางรวมอยู่ในค่าสตริงไม่ใช่คำสั่ง SQL เองจึงถือว่าเป็นส่วนหนึ่งของค่าเป้าหมายแทนที่จะตีความเป็นข้อคิดเห็น SQL

โรเบิร์ต '; วางผู้ใช้ตาราง; - / ผิด :

เลือก UserID จากผู้ใช้ WHERE UserName = 'Robert \'; วางผู้ใช้ตาราง - 'และรหัสผ่าน =' ส่งผิด '

เพียงแค่หลีกหนีเครื่องหมายคำพูดเดียวหลัง Robert ทั้งอัฒภาคและเครื่องหมายขีดกลางจะอยู่ในสตริงการค้นหา UserName ดังนั้นฐานข้อมูลจะค้นหาอย่างแท้จริง "โรเบิร์ต '; วางผู้ใช้ตาราง; -" แทนที่จะดำเนินการลบตาราง

สรุป

ในขณะที่การโจมตีทางเว็บมีวิวัฒนาการและมีความซับซ้อนมากขึ้นหรือมุ่งเน้นไปที่จุดเริ่มต้นที่แตกต่างออกไปสิ่งสำคัญคืออย่าลืมป้องกันการโจมตีที่พยายามและจริงซึ่งเป็นแรงบันดาลใจของ "เครื่องมือแฮ็กเกอร์" ที่มีอยู่มากมายซึ่งออกแบบมาเพื่อใช้ประโยชน์จากพวกมัน

การโจมตีบางประเภทเช่น DDoS ไม่สามารถหลีกเลี่ยงได้ง่ายในขณะที่การโจมตีอื่น ๆ เช่น SQLI สามารถทำได้ อย่างไรก็ตามความเสียหายที่สามารถทำได้จากการโจมตีประเภทนี้สามารถทำได้ตั้งแต่ความไม่สะดวกไปจนถึงความหายนะขึ้นอยู่กับข้อควรระวัง

DDOS Attack On Azerbedzjan Web Sites

Tutorial SQL Injection With SQLmap

How A Hacker Could Attack Web Apps With Burp Suite & SQL Injection

Web Application SECURITY In ASP.NET Core - Part 1 - SQL Injection

Hacking Websites With SQL Injection - Computerphile

Anonymous - How To Hack A Website By DDosing And SQL Injection

Hacking With SQL Injection Attacks (and Where To Practice Them Safely)

How A Hacker Could Attack Website With SQL Injection | Hacking Tutorial


ความเป็นส่วนตัวและความปลอดภัย - บทความยอดนิยม

วิธีเปลี่ยนรูปภาพบัญชีของคุณใน Windows 10

ความเป็นส่วนตัวและความปลอดภัย Oct 15, 2025

ภาพบัญชีของคุณคือสิ่งที่คุณเห็นบนหน้าจอลงชื่อเข้าใช้ Windows และเม�..


App Stores ไม่สามารถปกป้องคุณจากแอปที่ใช้ข้อมูลของคุณในทางที่ผิด

ความเป็นส่วนตัวและความปลอดภัย Sep 11, 2025

เนื้อหาที่ไม่ถูกแคช แอปที่คุณได้รับจาก App Store ไม่จำเป็นต้องน่าเช�..


วิธีสังเกตหน้า Facebook ปลอม

ความเป็นส่วนตัวและความปลอดภัย May 11, 2025

เนื้อหาที่ไม่ถูกแคช มีเฟซบุ๊กปลอมอยู่มากมาย อย่างดีที่สุดพวกเ..


วิธีเปลี่ยนรหัสผ่าน Facebook ของคุณ

ความเป็นส่วนตัวและความปลอดภัย Nov 14, 2024

คนส่วนใหญ่ใช้รหัสผ่านที่น่ากลัว . หากคุณเป็นหนึ่งในนั้นคุณ�..


Dark Web คืออะไร?

ความเป็นส่วนตัวและความปลอดภัย Oct 20, 2025

เนื้อหาที่ไม่ถูกแคช มีสองเว็บ มีเว็บปกติที่คนส่วนใหญ่ใช้ทุกวั..


วิธีแสดง / ซ่อนแอปพลิเคชั่นเริ่มต้นที่ซ่อนอยู่ทั้งหมดใน Ubuntu 14.10

ความเป็นส่วนตัวและความปลอดภัย Sep 10, 2025

เราเพิ่งแสดงให้คุณเห็น วิธีจัดการแอปพลิเคชันเริ่มต้นใน Ubuntu 14.04..


ไคลเอ็นต์เดสก์ท็อประยะไกล / VNC แบบแท็บสำหรับ Windows

ความเป็นส่วนตัวและความปลอดภัย Nov 27, 2024

เนื้อหาที่ไม่ถูกแคช ใครก็ตามที่ทำงานในสภาพแวดล้อมเซิร์ฟเวอร์หลา�..


ติดตั้ง Firestarter Firewall บน Ubuntu Linux

ความเป็นส่วนตัวและความปลอดภัย Dec 7, 2024

เนื้อหาที่ไม่ถูกแคช Firestarter เป็นไฟร์วอลล์ที่ใช้งานง่ายสำหรับ Ubuntu ซึ่งม..


หมวดหมู่