ดูการใช้ประโยชน์จากช่องโหว่

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

ก่อนที่จะเริ่ม

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

นี่จะไม่เป็นสถานการณ์จริงในโลก

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

เราไปเที่ยวยุค 80

สิ่งที่ฉันจะแสดงให้คุณเห็นว่าฉันสามารถทำได้บนแล็ปท็อปของฉัน แต่ก็ไม่ได้หมายความว่าจะสามารถทำได้ในวันนี้ด้วยวิธีง่ายๆ concepts หลาย ๆ แนวคิดเหล่านี้ถูกใช้ประโยชน์ไปแล้วหลายครั้งจนมีการใช้วิธีการป้องกันแบบใหม่และวิธีการใหม่ ๆ ในการหลบเลี่ยง พวกเขาได้โผล่ออกมา😛 แต่นั่นทำให้เรากลับมาที่เดิมไม่มีช่องว่างที่จะบอกได้ทั้งหมด🙂

มันอาจไม่ทำงานบนโปรเซสเซอร์ของคุณ

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

ไฟล์ บัฟเฟอร์ล้น

ก่อนอื่นเราต้องเข้าใจครึ่งแรกของชุดค่าผสมนี้ก่อน

บัฟเฟอร์

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

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

กอง

หรือที่เรียกว่า stacks เป็นประเภทข้อมูลนามธรรมที่เราสามารถทำได้ ซ้อนกัน ข้อมูลลักษณะสำคัญคือมีการสั่งซื้อ LIFO (เข้าก่อนออกครั้งสุดท้าย). ลองคิดดูเกี่ยวกับสแต็คของเพลตเราวางไว้ด้านบนทีละแผ่นจากนั้นเราก็นำออกมาทีละแผ่นจากด้านบนทำให้จานสุดท้ายที่เราใส่ (อันที่อยู่ด้านบนสุด ) เป็นจานแรกที่เราจะหยิบออกมาแน่นอนว่าถ้าเราหยิบออกมาได้ทีละจานเท่านั้นและเราตัดสินใจที่จะทำตามลำดับนั้น: P.

ตอนนี้คุณรู้ทั้งสองแนวคิดแล้วเราต้องจัดลำดับให้เป็นระเบียบ สแต็คมีความสำคัญเนื่องจากแต่ละโปรแกรมที่เราเรียกใช้มีของตัวเอง กองการดำเนินการ. แต่กองนี้มี ลักษณะเฉพาะเติบโตลง. สิ่งเดียวที่คุณต้องรู้เกี่ยวกับเรื่องนี้ก็คือในขณะที่โปรแกรมกำลังทำงานเมื่อมีการเรียกใช้ฟังก์ชันสแต็กจะเปลี่ยนจากตัวเลข X ในหน่วยความจำเป็นตัวเลข (Xn) แต่เพื่อที่จะดำเนินการต่อเราต้องเข้าใจอีกแนวคิดหนึ่ง

พอยน์เตอร์

นี่เป็นแนวคิดที่ผลักดันให้โปรแกรมเมอร์หลายคนคลั่งไคล้เมื่อพวกเขาเริ่มต้นในโลกของ C อันที่จริงพลังอันยิ่งใหญ่ของการเขียนโปรแกรม C เกิดจากการใช้พอยน์เตอร์ เพื่อให้เป็นเรื่องง่ายตัวชี้ ชี้ไปที่ที่อยู่หน่วยความจำ ฟังดูซับซ้อน แต่ก็ไม่ได้ซับซ้อนขนาดนั้นเราทุกคนมี RAM ในเครื่องใช่ไหม? นี่สามารถกำหนดเป็นไฟล์ การจัดเรียงบล็อกอย่างต่อเนื่องโดยปกติตำแหน่งเหล่านี้จะแสดงเป็นเลขฐานสิบหก (จาก 0 ถึง 9 และจาก A ถึง F เช่น 0x0, 0x1, 0x6, 0xA, 0xF, 0x10) นี่เป็นบันทึกที่น่าสงสัย 0x10 NO เท่ากับ 10 😛ถ้าเราแปลงเป็นเลขฐานสิบมันจะเหมือนกับการพูด 15 นี่เป็นสิ่งที่ทำให้สับสนมากกว่าหนึ่งอย่างในตอนแรก แต่ลองลงไปดูกัน

ประวัติ

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

ตอนนี้ปฏิบัติ

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

GDB

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

retinput.c

เป็นเจ้าของ. Christopher Diaz Riveros

นี่เป็นโปรแกรมที่ค่อนข้างง่ายเราจะใช้ไลบรารี stdio.h เพื่อให้สามารถรับข้อมูลและแสดงในเทอร์มินัล เราสามารถเห็นฟังก์ชันที่เรียกว่า return_input ซึ่งสร้างไฟล์ กันชน ที่เรียกว่า แถวซึ่งมีความยาว 30 ไบต์ (ชนิดข้อมูลถ่านยาว 1 ไบต์)

ฟังก์ชั่น gets(array); ขอข้อมูลโดยคอนโซลและฟังก์ชัน printf() ส่งคืนเนื้อหาของอาร์เรย์และแสดงบนหน้าจอ

ทุกโปรแกรมที่เขียนด้วย C เริ่มต้นด้วยฟังก์ชัน main()สิ่งนี้จะรับผิดชอบในการเรียก return_input เท่านั้นตอนนี้เรากำลังรวบรวมโปรแกรม

เป็นเจ้าของ. Christopher Diaz Riveros

ลองมาดูสิ่งที่ฉันเพิ่งทำไป ทางเลือก -ggdb บอก gcc ให้คอมไพล์โปรแกรมด้วยข้อมูลเพื่อให้ gdb สามารถดีบักได้อย่างถูกต้อง -fno-stack-protector เป็นตัวเลือกที่เห็นได้ชัดว่าเราไม่ควรใช้ แต่เรากำลังจะใช้เพราะมิฉะนั้นจะสามารถสร้างบัฟเฟอร์ล้นในสแตกได้ ในที่สุดฉันก็ได้ทดสอบผลลัพธ์แล้ว ./a.out มันแค่เรียกใช้สิ่งที่ฉันเพิ่งรวบรวมมันขอข้อมูลจากฉันและส่งคืน วิ่ง🙂

คำเตือน

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

การดีบักโปรแกรม

เป็นเจ้าของ. Christopher Diaz Riveros

ตอนนี้ส่วนนี้อาจจะสับสนเล็กน้อย แต่เนื่องจากฉันเขียนไปแล้วค่อนข้างน้อยฉันจึงไม่สามารถอธิบายทุกอย่างได้ดังนั้นขออภัยหากคุณเห็นว่าฉันไปเร็วเกินไป🙂

กำลังปลดรหัส

เริ่มต้นด้วยการดูโปรแกรมภาษาเครื่องที่คอมไพล์ของเรา

เป็นเจ้าของ. Christopher Diaz Riveros

นี่คือรหัสของฟังก์ชันหลักของเราใน การชุมนุมนี่คือสิ่งที่โปรเซสเซอร์ของเราเข้าใจบรรทัดทางด้านซ้ายคือที่อยู่ทางกายภาพในหน่วยความจำไฟล์ <+ n> มันเป็นที่รู้จักกันในชื่อ ชดเชยโดยทั่วไปแล้วระยะห่างจากจุดเริ่มต้นของฟังก์ชัน (หลัก) ถึงคำสั่งนั้น (เรียกว่า opcode). จากนั้นเราจะเห็นประเภทของคำสั่ง (push / mov / callq …) และการลงทะเบียนอย่างน้อยหนึ่งรายการ สรุปได้ว่าเป็นการบ่งชี้ตามด้วยต้นทาง / ต้นทางและปลายทาง <return_input> หมายถึงฟังก์ชันที่สองของเราลองมาดูกัน

return_input

เป็นเจ้าของ. Christopher Diaz Riveros

มันซับซ้อนกว่านี้เล็กน้อย แต่ฉันแค่อยากให้คุณตรวจสอบสองสามอย่างมีแท็กที่เรียกว่า <gets@plt> และหนึ่งรหัสสุดท้ายที่เรียกว่า retq ระบุจุดสิ้นสุดของฟังก์ชัน เราจะใส่เบรกพอยต์สองสามจุดหนึ่งในฟังก์ชัน gets และอีกรายการหนึ่งใน retq.

เป็นเจ้าของ. Christopher Diaz Riveros

วิ่ง

ตอนนี้เราจะเรียกใช้โปรแกรมเพื่อดูว่าการดำเนินการเริ่มต้นอย่างไร

เป็นเจ้าของ. Christopher Diaz Riveros

เราจะเห็นว่าลูกศรเล็ก ๆ ปรากฏขึ้นเพื่อระบุว่าเราอยู่ที่ไหนฉันต้องการให้พวกเขาคำนึงถึงทิศทาง 0x000055555555469bนี่คือที่อยู่หลังจากโทรไป return_input ในฟังก์ชัน main นี่เป็นสิ่งสำคัญเนื่องจากเป็นจุดที่โปรแกรมควรส่งคืนเมื่อคุณเสร็จสิ้นการรับไฟล์ อินพุตมาเข้าสู่ฟังก์ชั่นกัน ตอนนี้เรากำลังจะตรวจสอบหน่วยความจำก่อนเข้าสู่ฟังก์ชั่น gets.

เป็นเจ้าของ. Christopher Diaz Riveros

ฉันได้ใส่ฟังก์ชันหลักกลับมาให้คุณแล้วและฉันได้เน้นรหัสที่ฉันอ้างถึงอย่างที่คุณเห็นเนื่องจาก ความอดทน ได้แยกออกเป็นสองส่วนฉันต้องการให้พวกเขาคำนึงถึงทิศทาง 0x7fffffffdbf0 (อันแรกจากด้านซ้ายหลังคอมมานโด x/20x $rsp) เนื่องจากนี่คือตำแหน่งที่เราต้องใช้เพื่อตรวจสอบผลลัพธ์ของการได้รับมาดำเนินการต่อ:

ทำลายโปรแกรม

เป็นเจ้าของ. Christopher Diaz Riveros

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

การเปลี่ยนเส้นทางกลับ

ตอนนี้เราได้จัดการเพื่อป้อนส่วนนี้ของรหัสที่ระบุการกลับมาของฟังก์ชันแล้วมาดูกันว่าจะเกิดอะไรขึ้นถ้าเราเปลี่ยนที่อยู่🙂แทนที่จะไปที่ตำแหน่งของ opcode ที่ตามหลังที่เรามีเมื่อสักครู่ คุณคิดอย่างไรถ้าเรากลับไป return_inputเหรอ? แต่สำหรับสิ่งนี้จำเป็นต้องเขียนที่อยู่ที่เราต้องการเป็นไบนารีเราจะทำมันด้วยฟังก์ชัน printf จากการทุบตี🙂

เป็นเจ้าของ. Christopher Diaz Riveros

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

ปฏิกิริยาตอบสนอง

การเปลี่ยนแปลงง่ายๆนี้ถือได้ว่าเป็นไฟล์ เอาเปรียบ ธรรมดามาก🙂เขาสามารถทำลายโปรแกรมและทำบางสิ่งที่เราต้องการให้เขาทำ

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


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   2p2 dijo

    ตรงไปตรงมามากขึ้น เขียนน้อยลงและให้ความสำคัญกับสิ่งที่สำคัญ

    1.    คริส ADR dijo

      สวัสดีขอบคุณสำหรับความคิดเห็น

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

      ความนับถือ

      1.    ไม่ระบุชื่อ dijo

        ปัญหาคือผู้ที่ไม่มีความรู้ด้านการเขียนโปรแกรมจะไม่ทราบว่ามีอะไรบ้างเพราะมันซับซ้อนเกินไปที่จะเริ่มต้น แต่ผู้ที่รู้วิธีการเขียนโปรแกรมจะชื่นชมว่าเป็นคนตรงกว่า

        ฉันคิดว่าคุณไม่สามารถเข้าถึงทุกคนได้คุณต้องเลือกและในกรณีนี้คุณได้ทำบาปที่ต้องการปกปิดมาก

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

    2.    ไม่ระบุชื่อ dijo

      ฉันคิดว่าสิ่งเดียวกัน

      1.    คริส ADR dijo

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

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

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

        ความนับถือ

  2.   มาริโอ dijo

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

    1.    คริส ADR dijo

      ตัวอย่างนี้นำมาจาก The Shellcoder's Handbook โดย Chris Anley, John Heasman, Felix Linder และ Gerardo Richarte แต่ในการแปล 64 บิตฉันต้องเรียนรู้เกี่ยวกับสถาปัตยกรรมของฉันคู่มือสำหรับนักพัฒนา intel เล่ม 2 และ 3 เป็น แหล่งที่มาที่น่าเชื่อถือสำหรับสิ่งนั้น นอกจากนี้ยังเป็นการดีที่จะอ่านเอกสาร GDB ซึ่งมาพร้อมกับคำสั่ง 'info gdb' หากต้องการเรียนรู้ Assembly และ C มีหนังสือที่ดีมากมายยกเว้นว่าหนังสือ Assembly นั้นเก่าไปหน่อยดังนั้นจึงมีช่องว่างให้เติมอีก พิมพ์เอกสาร

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

      หวังว่าจะช่วยได้บ้าง🙂ทักทาย

  3.   ฟรานซ์ dijo

    บทความดีๆบล็อกเก่า desdelinux ได้เกิดใหม่อีกครั้ง =)
    เมื่อคุณบอกว่ารีโมตเชลล์ไม่มีประสิทธิภาพคุณหมายถึงมาตรการตอบโต้ที่ออกแบบมาเพื่อลดการโจมตีพวกเขาเรียกว่าการรักษาความปลอดภัยที่น่ารังเกียจ
    ทักทายมาเรื่อย ๆ

    1.    คริส ADR dijo

      ขอบคุณมาก Franz 🙂คำพูดที่ดีมากจริงๆแล้วฉันหมายความว่า Shellcoding ในวันนี้ซับซ้อนกว่าที่เราเห็นที่นี่มาก เรามี ASLR (ตัวสร้างตำแหน่งหน่วยความจำแบบสุ่ม) ตัวป้องกันสแต็กมาตรการต่างๆและมาตรการตอบโต้ที่ จำกัด จำนวน opcodes ที่สามารถฉีดเข้าไปในโปรแกรมและเป็นเพียงจุดเริ่มต้น

      ขอแสดงความนับถือ

  4.   ซอฟแวร์ฟรี dijo

    สวัสดีคุณจะทำส่วนอื่นเพื่อขยายหัวข้อหรือไม่? มันน่าสนใจ

    1.    คริส ADR dijo

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

      สวัสดีและขอบคุณสำหรับการแบ่งปัน

  5.   กระบองเพชร dijo

    เจ๊ดีมาก! คุณมีส่วนร่วมในโพสต์ที่ยอดเยี่ยม! คำถามหนึ่งคือฉันเริ่มต้นการรักษาความปลอดภัยด้านไอทีโดยอ่านหนังสือชื่อ "Assuring security by pen testing" หนังสือเล่มนี้แนะนำไหม คุณจะแนะนำให้ฉันเริ่มสอบถามเกี่ยวกับปัญหาเหล่านี้ได้อย่างไร

    1.    คริส ADR dijo

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

  6.   ไอเซ็น dijo

    เฮ้
    ขอบคุณมากสำหรับการอธิบายหัวข้อนี้นอกเหนือจากการแสดงความคิดเห็นว่าสำหรับข้อมูลเพิ่มเติมเรามี "คู่มือของเชลล์โคเดอร์" ฉันมีรอการอ่าน😉อยู่แล้ว