Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

1. ตัดทอนเนื้อหาแบบสอบถาม

ในกรณีที่คุณต้องการละเว้นสคริปต์ในการสืบค้น ตัวอย่างเช่น สำหรับการประมวลผลด้านล่าง การสืบค้นจำเป็นต้องมีเงื่อนไข active=1 แต่เราสามารถแสดงความคิดเห็นได้ (--, -- -, -+, #, /*, /**/, // , ;%00…) และ ไม่สนใจมัน เมื่อทำการขุด เรามักจะไม่รู้ว่าเนื้อหาที่เหลือของแบบสอบถามนั้นทำอะไร ดังนั้นการใช้ความคิดเห็นในกรณีนี้จึงมีประสิทธิภาพมาก

Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

หลังจากแสดงความคิดเห็น คำถามของเราจะกลายเป็น:

Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

2. หลีกเลี่ยงการกรองคำหลัก

ก. ความคิดเห็นแบบอินไลน์

ความคิดเห็นแบบอินไลน์ถูกนำมาใช้อย่างมีประสิทธิภาพเพื่อหลีกเลี่ยงการกรองช่องว่าง คุณสามารถใช้อักขระต่อไปนี้เพื่อข้ามการกรองช่องว่าง: /**/, %20, %09, %0a, %0b, %0c, %0d, %a0) ตัวอย่างเช่น:

Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

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

Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

ข. แทนที่คำหลัก

เมื่อใช้ประโยชน์จากการฉีด SQLเรามักจะใช้คำหลักเช่น: union, select, information_schema... ในหลายกรณี โปรแกรมเมอร์เพียงแค่แทนที่คำหลักเหล่านั้น:

Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

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

ตอนนี้แทนที่จะใช้คำหลัก:

select, union…

เราจะใช้:

SeLEcT, UniOn…

พื้นฐานของการเลี่ยงผ่านนี้คือ ระบบการจัดการฐานข้อมูลไม่ได้แยกความแตกต่างระหว่างคีย์เวิร์ด case และ case

ในบางกรณี เว็บแอปพลิเคชันจะกรองคำหลักบางคำหรือทั้งหมดออก (สหภาพ เลือก...) เราจะข้ามดังนี้:

id=1+uniunionon+SeLselectecT+1,2,3-- -

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

id=1+union+SeLecT+1,2,3-- -

ค. การเข้ารหัสอักขระ

เราสามารถเลี่ยงได้เมื่อ WAF (Web Application Firewall) บล็อกคำหลักด้วยการเข้ารหัส แอปพลิเคชัน WAF จำนวนมากจะถอดรหัสการสืบค้นเพียงครั้งเดียวและกรองคำหลักในบัญชีดำออก จากนั้นให้เข้ารหัสคำขอสองครั้งเพื่อให้สามารถข้ามได้ในกรณีนี้

Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

3. บายพาสบล็อกเครื่องหมายคำพูดเดี่ยวและคู่

- ลองดูตัวอย่างก่อนที่จะเรียนรู้เกี่ยวกับการบายพาสนี้โดยเฉพาะ

Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

ในสถานการณ์สมมตินี้ เรามีตารางในฐานข้อมูลที่ชื่อผู้ใช้ งานต่อไปคือการรู้ชื่อคอลัมน์ในตารางเพื่อรับข้อมูล เช่นเดียวกับในแบบสอบถามข้างต้น เราใช้เงื่อนไข: table_name='users' แต่หากทั้งเครื่องหมายคำพูดเดี่ยว (') และเครื่องหมายคำพูดคู่ (") ถูกบล็อกโดย WAF เราจะไม่สามารถใช้ 'ผู้ใช้' หรือ 'ผู้ใช้' ได้อีกต่อไป แล้ววิธีแก้ปัญหานี้ระบบฐานข้อมูลในตัวทำให้เรามีฟังก์ชันที่ แก้ปัญหานี้ได้เป็นอย่างดี ซึ่งก็คือฟังก์ชัน CHAR( ) (สำหรับ Oracle คือ CHR()) ตัวอย่างเช่น ในการสืบค้นข้างต้นเราจะเลี่ยงมันโดย:

Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรองWeb5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

โปรแกรมเมอร์ PHP คุ้นเคยกับฟังก์ชัน addslashes() เป็นอย่างดี ฟังก์ชัน addslashes() มีเอฟเฟกต์การเพิ่มหน้าอักขระพิเศษ เช่น เครื่องหมายคำพูดเดี่ยว (') เครื่องหมายคำพูดคู่ (") เครื่องหมายแบ็กสแลช (\) อักขระ NUL (ไบต์ null) "\" เพื่อช่วยระบบจัดการฐานข้อมูล มีหรือไม่ ไม่มีปัญหาและความสับสนในการจัดการสตริงที่มีอักขระเหล่านั้น ดังนั้น เมื่อเราต้องการแทรกลงในแบบสอบถามตามสคริปต์: name='someName' หรือ '1'='1'-- ผลลัพธ์ไม่ใช่สิ่งที่เราคาดหวังอีกต่อไป

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

4. ข้ามข้อผิดพลาด "การผสมผสานที่ผิดกฎหมายสำหรับการดำเนินการ UNION"

ในระบบการจัดการบางระบบ (มักพบใน MySql) เมื่อฐานข้อมูลและตารางได้รับการตั้งค่าให้เปรียบเทียบ เมื่อใช้คีย์เวิร์ด UNION ข้อผิดพลาด "การผสมผสานที่ผิดกฎหมายสำหรับการดำเนินการ UNION" จะถูกรายงาน การจัดเรียงการตั้งค่าอาจเกิดจากความตั้งใจของผู้ออกแบบฐานข้อมูลหรือเนื่องจากการตั้งค่าเริ่มต้นของ MySql ในกรณีที่ใช้สหภาพ เราต้องแน่ใจว่าเงื่อนไขค่าที่เลือกในแต่ละฟิลด์ต้องมีการกำหนดประเภทรหัสที่สอดคล้องกัน ในความคิดของฉัน ข้อผิดพลาดนี้ค่อนข้างเกิดขึ้นบ่อย โดยเฉพาะกับ CMS ที่ใช้ Apache MySql ผู้คนสามารถเรียนรู้เพิ่มเติมได้ที่: http://bugs.mysql.com/bug.php?id=57926
ในกรณีนี้เราสามารถใช้วิธีแปลงเป็นประเภทการเข้ารหัสที่เหมาะสมได้

ตัวอย่างเช่น ในกรณีต่อไปนี้:

Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

ในการสืบค้นข้างต้น หาก column1 ตั้งค่าการจัดเรียงเป็น Unicode-UTF8 หรือ _latin1 เป็นต้น สิ่งที่เลือกจาก column2 จะต้องถูกแปลงเป็นโค้ดที่เกี่ยวข้อง เราสามารถบังคับสไตล์ได้ดังนี้:

Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

เราเห็นข้อเสียเปรียบในวิธีการบายพาสนี้: เราต้องรู้ว่าโค้ดที่เรียงกันคือ _latin1 ในความคิดของฉัน วิธีที่ดีกว่าในการหลีกเลี่ยงคือการใช้ฟังก์ชันการเข้ารหัสและถอดรหัสแบบ hex และ unhex

Web5: การแทรก SQL - เทคนิคบางอย่างในการเลี่ยงผ่านกลไกการกรอง

มีฟังก์ชันอื่นๆ อีกมากมายที่สามารถใช้แทน hex และ unhex ได้


คำแนะนำจาก AZ เกี่ยวกับวิธีติดตั้ง Windows 10 บิวด์ 14393.222

คำแนะนำจาก AZ เกี่ยวกับวิธีติดตั้ง Windows 10 บิวด์ 14393.222

ล่าสุด Microsoft เปิดตัวการอัปเดตสะสมล่าสุดสำหรับผู้ใช้พีซี Windows 10 ที่เรียกว่า Build 14393.222 การอัปเดตนี้เผยแพร่สำหรับ Windows 10 โดยส่วนใหญ่จะแก้ไขจุดบกพร่องตามคำติชมของผู้ใช้ และปรับปรุงประสบการณ์ด้านประสิทธิภาพของระบบปฏิบัติการ

ปกป้องเครือข่ายคอมพิวเตอร์ของคุณด้วยโฮสต์ Bastion ในเวลาเพียง 3 ขั้นตอน

ปกป้องเครือข่ายคอมพิวเตอร์ของคุณด้วยโฮสต์ Bastion ในเวลาเพียง 3 ขั้นตอน

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

วิธีสร้างคีย์ Windows หากไม่มีแป้นพิมพ์ของคุณ

วิธีสร้างคีย์ Windows หากไม่มีแป้นพิมพ์ของคุณ

หากคุณต้องการใช้แป้นพิมพ์คลาสสิกรุ่นเก่า เช่น IBM Model M ที่ไม่มีคีย์ Windows มาให้ มีวิธีง่ายๆ ในการเพิ่มคีย์เพิ่มเติมโดยการยืมคีย์ที่คุณไม่ได้ใช้บ่อย

3 วิธีในการล้างบันทึกเหตุการณ์ทั้งหมดใน Windows 10 อย่างรวดเร็ว

3 วิธีในการล้างบันทึกเหตุการณ์ทั้งหมดใน Windows 10 อย่างรวดเร็ว

บางครั้งคุณอาจต้องลบบันทึกเหตุการณ์เก่าทั้งหมดพร้อมกัน ในคู่มือนี้ Quantrimang.com จะแสดง 3 วิธีในการลบบันทึกเหตุการณ์ทั้งหมดใน Windows 10 Event Viewer อย่างรวดเร็ว

วิธี IP ปลอมช่วยให้คุณเข้าถึงโดยไม่ระบุชื่อ

วิธี IP ปลอมช่วยให้คุณเข้าถึงโดยไม่ระบุชื่อ

ในบทความก่อนหน้านี้หลายบทความ เราได้กล่าวไว้ว่าการไม่เปิดเผยตัวตนทางออนไลน์เป็นสิ่งสำคัญอย่างยิ่ง ข้อมูลส่วนตัวรั่วไหลทุกปี ทำให้การรักษาความปลอดภัยออนไลน์มีความจำเป็นมากขึ้น นั่นคือเหตุผลที่เราควรใช้ที่อยู่ IP เสมือน ด้านล่างนี้เราจะเรียนรู้เกี่ยวกับวิธีการสร้าง IP ปลอม!

วิธีสร้างโหมดพื้นหลังโปร่งใสบน Windows 10

วิธีสร้างโหมดพื้นหลังโปร่งใสบน Windows 10

WindowTop เป็นเครื่องมือที่มีความสามารถในการหรี่หน้าต่างแอปพลิเคชันและโปรแกรมทั้งหมดที่ทำงานบนคอมพิวเตอร์ Windows 10 หรือคุณสามารถใช้อินเทอร์เฟซพื้นหลังสีเข้มบน windows ได้

วิธีปิดแถบภาษาบนทาสก์บาร์ของ Windows 8

วิธีปิดแถบภาษาบนทาสก์บาร์ของ Windows 8

แถบภาษาบน Windows 8 เป็นแถบเครื่องมือภาษาขนาดเล็กที่ออกแบบมาเพื่อแสดงบนหน้าจอเดสก์ท็อปโดยอัตโนมัติ อย่างไรก็ตาม หลายๆ คนต้องการซ่อนแถบภาษานี้บนทาสก์บาร์

วิธีการตั้งค่า WEP, WPA, WPA2 สำหรับเราเตอร์ Linksys

วิธีการตั้งค่า WEP, WPA, WPA2 สำหรับเราเตอร์ Linksys

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

เคล็ดลับในการปรับความเร็วการเชื่อมต่ออินเทอร์เน็ตจาก Linksys ให้เหมาะสม

เคล็ดลับในการปรับความเร็วการเชื่อมต่ออินเทอร์เน็ตจาก Linksys ให้เหมาะสม

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

เคล็ดลับในการแสดงการแจ้งเตือนบนหน้าจอเข้าสู่ระบบ Windows 10

เคล็ดลับในการแสดงการแจ้งเตือนบนหน้าจอเข้าสู่ระบบ Windows 10

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