ผู้สอน: ตอนนี้เพื่อพยายามค้นหาการฉีด SQL
คุณต้องเรียกดูเป้าหมายของคุณและพยายามแบ่งแต่ละหน้า
ดังนั้นเมื่อใดก็ตามที่คุณเห็นกล่องข้อความหรือพารามิเตอร์ในแบบฟอร์มนี้
เช่น หน้า php เท่ากับบางสิ่งบางอย่าง ลองฉีดสิ่งต่าง
ๆ ที่นี่
ดังนั้นลองใช้คำพูดเดียว
ลองใช้ a และ หรือ เรียงตามคำสั่ง เพื่อแยกหน้าและทำให้มันดูแตกต่าง
ผมจะแสดงให้คุณเห็นตัวอย่างที่นี่
และฉันจะเข้าไปที่หน้าเข้าสู่ระบบก่อน ตรงนี้
และมันขอให้ฉันเข้าสู่ระบบตอนนี้
แต่ที่จริงฉันลงทะเบียนด้วยชื่อของฉันเอง
ดังนั้นคุณสามารถเข้าไปที่นี่และลงทะเบียน
ฉันมีชื่อผู้ใช้ชื่อ
Zaid และรหัสผ่านหนึ่ง สอง สาม สี่ ห้าหก
อย่างแรกเลยขอแค่...
ฉันจะเข้าสู่ระบบเพื่อแสดงให้คุณเห็น
ชื่อผู้ใช้ของฉันคือ
Zaid และรหัสผ่านของฉันคือ หนึ่ง สอง สาม สี่ ห้าหก
และตอนนี้ฉันเข้าสู่ระบบในฐานะ
Zaid และลายเซ็นของฉันคือ aa
มันไม่มีอะไรจริง ๆ เหมือนกับการทดสอบ
ฉันจะออกจากระบบและเรากลับไปที่หน้าเข้าสู่ระบบ
ที่นี่เรามีหน้าเพื่อให้คุณสามารถลองฉีดเข้าไปได้
แต่เราจะพูดถึงเรื่องนี้ในภายหลังดังนั้น
ขณะนี้ เรากำลังมีตัวอย่างการแทรกลงในกล่องข้อความ
เพื่อให้คุณสามารถลองใส่ชื่อและรหัสผ่าน
ฉันจะใส่ชื่อของฉันเป็น Zaid และฉันจะใส่คำพูดเดียว
ดังนั้นฉันจึงใส่เครื่องหมายนี้ลงในรหัสผ่านของฉัน
ลองดูว่าเราจะทำลายมันได้หรือไม่
และอย่างที่คุณเห็นในขณะนี้
มีข้อผิดพลาดแสดงให้เราทราบ
และดูเหมือนจะไม่ใช่ข้อผิดพลาดปกติ ดูเหมือนว่าเป็นข้อผิดพลาดของฐานข้อมูล
และโดยปกติคุณจะโชคดีมากหากได้รับข้อผิดพลาดเช่นนี้
โดยปกติแล้ว ข้อผิดพลาดจะไม่ให้ข้อมูลเท่านี้
บางครั้ง คุณจะเห็นว่าหน้าเว็บไม่ได้ทำงานตามที่คาดไว้อย่างที่คุณคาดหวัง
บางครั้งมันก็จะเป็นหน้าที่ดูไม่เป็นไปตามที่ควร
ตัวอย่างเช่น หากเป็นหน้าข่าว
อาจมีบทความขาดหายไป หรือหากเป็นบล็อก
อาจมีบทความใดบทความหนึ่งขาดหายไปหรือมีบทความประเภทอื่น
ดังนั้นคุณต้องจับตาดูว่ามีอะไรเปลี่ยนแปลงบ้าง
ในตัวอย่างนี้ เราได้รับข้อผิดพลาดที่ดีจริงๆ
มันบอกเราว่ามีไฟล์อะไร
และมันบอกเราว่ามีข้อผิดพลาดในคำสั่ง
และข้อผิดพลาดใกล้เครื่องหมายคำพูดที่เราเพิ่มเข้าไป
และมันยังบอกเราถึงคำสั่งที่กำลังดำเนินการอยู่
นี้เป็นสิ่งที่ดีจริงๆสำหรับการเรียนรู้
เพราะตอนนี้เราสามารถเห็นได้ว่าคำสั่งนั้นคืออะไร
ที่ระบบกำลังพยายามรันอยู่
และระบบที่พยายามทำการเลือก *.
ดังนั้นจึงพยายามเลือกทุกอย่างจากบัญชี โดยที่ชื่อผู้ใช้เท่ากับ
Zaid และรหัสผ่านเท่ากับเครื่องหมายคำพูดเดียว
และโปรดทราบว่าระบบที่เว็บแอปพลิเคชันได้เพิ่มเครื่องหมายคำพูดรอบชื่อแล้ว
ดังนั้นเมื่อฉันพูด Zaid มันเพิ่ม Zaid ระหว่างสองอัญประกาศ
และมันเพิ่มอัญประกาศเดี่ยวที่ฉันเพิ่มระหว่างอีกสองอัญประกาศ
นั่นเป็นสาเหตุที่เรามีเครื่องหมายคำพูดสามตัวตรงนี้
จากนี้ไป เหมือนกับ
70% ของเว็บไซต์เป้าหมาย มีการฉีด
SQL
เรายังไม่แน่ใจว่าจะสามารถดำเนินการตามที่เราต้องการได้หรือไม่
ฉันสามารถแทรกโค้ดและเรียกใช้งานได้จริงหรือไม่
มาดูกันว่าเราจะทำได้ไหม
ชื่อผู้ใช้ก็จะเป็น Zaid อีกครั้ง
และสิ่งที่ฉันจะทำอย่างไรกับรหัสผ่าน
ฉันจะใส่รหัสผ่านของฉัน
ผมจะใส่หนึ่งสองสามสี่ห้าหกแล้วปิดมัน
ฉันจะบอกคุณว่าทำไมฉันถึงปิดมัน
เพราะคำสั่งปัจจุบันผ่านระบบคือ
select * from, to Zaid และเท่ากับ
และมันจะเปิดใบเสนอราคาเดียวด้วยตัวมันเอง
ให้เรียกรหัสผ่าน S นี้
เรากำลังถือว่าตัวแปรนี้เป็นตัวแปร
และมันรับเอาทุกอย่างที่ฉันใส่ที่นี่
ไม่ว่าฉันจะใส่อะไรในกล่องนี้
และมันจะใส่มันแทนรหัสผ่าน S ซึ่งเป็นตัวแปร
ฉันแค่ให้ความคิดคุณ คุณต้องจินตนาการว่าสิ่งนี้กำลังเกิดขึ้น
มันเอาอะไรก็ตามที่ฉันใส่เข้าไป และมันจะใส่มันระหว่างอัญประกาศเดี่ยวสองอัน
และมันจะถูกแทรกเข้าไปในนั้น
และดำเนินการบนระบบ
สิ่งที่ฉันทำคือ
ฉันจะใส่หนึ่ง สอง สาม สี่ 5 หก แล้วฉันจะใส่ใบเสนอราคาเอง
สิ่งที่ผมจะทำตอนนี้คือ รหัสจะเป็นแบบนี้
มันจะเลือกอันนี้ และรหัสผ่านก็เท่ากับอันนั้น
และฉันมีคำพูดสองข้อในตอนนี้ โอเค
แล้วสิ่งที่ผมจะทำคือ
ผมจะบอกว่า
หนึ่งเท่ากับหนึ่ง
หนึ่งจึงเท่ากับหนึ่ง
และฉันกำลังพยายามดูว่ามันจะทำตามที่ฉันต้องการให้ทำหรือไม่
ดังนั้นคำชี้แจงของฉันตอนนี้คือ
มันจะเลือก * จากบัญชี โดยที่ชื่อผู้ใช้เท่ากับ
Zaid และรหัสผ่านเท่ากับหนึ่ง
สอง สามสี่ห้าหก
และโปรดทราบว่า ฉันจะใส่สิ่งนี้เอง
และอันที่เท่ากับหนึ่ง
ปัญหาหนึ่งที่ระบบจะบ่นก็คือ เรามีใบเสนอราคาพิเศษที่นี่
เพราะฉันจะใส่ข้อความนี้ด้วยตัวเองในกล่องข้อความ
มันเลยจะมาบ่นว่านี่คือ
open code และไม่เคยถูกปิด
สิ่งที่ฉันจะทำคือฉันจะเพิ่มความคิดเห็น
และเมื่อคุณเพิ่มความคิดเห็น
โดยทั่วไปทุกอย่างที่มาหลังจากความคิดเห็นจะไม่ถูกดำเนินการ
ฉันจะใช้แฮชเป็นความคิดเห็น
ดังนั้นสิ่งใดก็ตามที่เข้ามาหลังจากแฮชระบบก็จะเพิกเฉย
ฉันจะฉีดตอนนี้ จะเป็นนี่ หนึ่ง เท่ากับ
1 และนี่ อย่างที่ฉันพูด ปกติแล้วสิ่งที่คุณมีที่นี่
คุณได้เฉือนรหัสผ่านของคุณ
หรือขึ้นอยู่กับว่าโปรแกรมเรียกว่าอะไร แค่จินตนาการ นี้.
และฉันจะใส่สิ่งนี้เข้าไปข้างใน
เมื่อคุณทำอย่างนั้น และใส่เข้าไปข้างใน โค้ดก็จะออกมาเป็นแบบนี้
มันจะดูเหมือนชื่อผู้ใช้ที่ถูกต้อง
รหัสผ่านที่ถูกต้อง
และหนึ่งจะเท่ากับหนึ่ง ซึ่งก็จริง
แล้วมันจะไม่ไป
มันจะเพิกเฉยคำพูดนี้ตรงนี้
ดังนั้นหากเราวางสิ่งนี้
เราควรจะสามารถเข้าสู่ระบบได้
มันควรจะอนุญาตให้ฉันเข้าสู่ระบบ
และสมบูรณ์แบบที่เราสามารถเข้าสู่ระบบและชื่อผู้ใช้คือ Zaid
จนถึงตอนนี้เรายังไม่ได้ทำอะไรเลย
แต่แบบนี้แสดงให้เราเห็นว่ามันกำลังรันโค้ดของเราหรือไม่?
มาลองอย่างอื่นกัน
ทีนี้ มาลองเพิ่มข้อความเท็จกัน
ดังนั้นเราจึงทำหนึ่งอันเท่ากันและนั่นถูกต้องและดำเนินการเมื่อเราต้องการ
ลองหนึ่งเท่ากับสอง
และนี่เป็นเท็จ
ดังนั้นฉันจึงมีรหัสผ่านที่ถูกต้อง
และฉันมีชื่อผู้ใช้ที่ถูกต้อง
และหนึ่งเท่ากับสอง
และนี่น่าจะผิด เพราะมันเป็นเท็จ
หนึ่งไม่เท่ากับสอง และผมใช้
a และทุกอย่างจะต้องเป็นจริง
ดังนั้นมันควรจะทำให้ฉันมีข้อผิดพลาด
แม้ว่าฉันจะใส่ชื่อผู้ใช้ที่ถูกต้อง และฉันจะใส่รหัสผ่านที่ถูกต้อง
ผมจึงใส่ 1 สอง สาม สี่ ห้า หก และหนึ่งเท่ากับสอง
มันก็จะแบบว่า โอ้ นี่มันผิด
และอย่างที่คุณเห็นว่ามีข้อผิดพลาดในการตรวจสอบสิทธิ์
ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง
แม้ว่าฉันจะให้รหัสผ่านที่ถูกต้องและชื่อผู้ใช้ที่ถูกต้องก็ตาม
นี่เป็นการยืนยันว่าเว็บไซต์นี้กำลังแทรกสิ่งที่เราต้องการลงในรหัสผ่านจริงๆ
ดังนั้นเราจึงสามารถใช้ฟิลด์รหัสผ่านเพื่อใส่โค้ด SQL
และมันจะอยู่ในรูปแบบนี้เสมอ
เราจะใส่รหัสผ่านและคุณจะใส่รหัสของคุณที่นี่
ผมจะใส่มันในรหัสตัวพิมพ์ใหญ่ที่นี่
เพราะเราจะใส่รหัสผ่าน ปิดใบเสนอราคา
แล้วใส่รหัสที่เราต้องการรันบนระบบตรงนี้
และมันจะถูกดำเนินการบนระบบเป้าหมาย