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 ได้


วิธีย่อขนาดหน้าจอใน Windows 10

วิธีย่อขนาดหน้าจอใน Windows 10

บทความนี้จะแสดงวิธีย่อขนาดหน้าจอใน Windows 10 เพื่อให้คุณใช้งานได้อย่างมีประสิทธิภาพ

วิธีปิด (หรือเปิด) Xbox Game Bar บน Windows 10

วิธีปิด (หรือเปิด) Xbox Game Bar บน Windows 10

Xbox Game Bar เป็นเครื่องมือสนับสนุนที่ยอดเยี่ยมที่ Microsoft ติดตั้งบน Windows 10 ซึ่งผู้ใช้สามารถเรียนรู้วิธีเปิดหรือปิดได้อย่างง่ายดาย

5 วิธีในการจดบันทึกบน Windows 11 โดยไม่ต้องดาวน์โหลดซอฟต์แวร์

5 วิธีในการจดบันทึกบน Windows 11 โดยไม่ต้องดาวน์โหลดซอฟต์แวร์

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

วิธีนำแอพพลิเคชั่นไปไว้บนหน้าจอคอมพิวเตอร์ Windows 11

วิธีนำแอพพลิเคชั่นไปไว้บนหน้าจอคอมพิวเตอร์ Windows 11

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

วิธีถอนการติดตั้งไดรเวอร์บน Windows อย่างสมบูรณ์

วิธีถอนการติดตั้งไดรเวอร์บน Windows อย่างสมบูรณ์

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

วิธีเปิดใช้งานแป้นพิมพ์เสมือน/แป้นพิมพ์สัมผัสบน Windows 11

วิธีเปิดใช้งานแป้นพิมพ์เสมือน/แป้นพิมพ์สัมผัสบน Windows 11

เรียนรู้วิธีเปิดใช้งานแป้นพิมพ์เสมือนบน Windows 11 เพื่อเพิ่มความสะดวกในการใช้งาน ผสานเทคโนโลยีใหม่เพื่อประสบการณ์ที่ดียิ่งขึ้น

วิธีใช้ AdLock เพื่อบล็อกโฆษณาบนคอมพิวเตอร์ของคุณ

วิธีใช้ AdLock เพื่อบล็อกโฆษณาบนคอมพิวเตอร์ของคุณ

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

หนอนคืออะไร? เหตุใดจึงเป็นอันตรายต่อคอมพิวเตอร์?

หนอนคืออะไร? เหตุใดจึงเป็นอันตรายต่อคอมพิวเตอร์?

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

วิธีดาวน์โหลด อัปเดต และแก้ไขปัญหาไดรเวอร์ USB บน Windows 10

วิธีดาวน์โหลด อัปเดต และแก้ไขปัญหาไดรเวอร์ USB บน Windows 10

เรียนรู้วิธีดาวน์โหลดและอัปเดตไดรเวอร์ USB บนอุปกรณ์ Windows 10 เพื่อให้ทำงานได้อย่างราบรื่นและมีประสิทธิภาพ

5 วิธีในการปรับแต่ง Xbox Game Bar บน Windows PC

5 วิธีในการปรับแต่ง Xbox Game Bar บน Windows PC

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Xbox Game Bar และวิธีปรับแต่งให้เหมาะกับประสบการณ์การเล่นเกมที่สมบูรณ์แบบของคุณ บทความนี้มีข้อมูลทั้งหมด