ผู้แต่ง: czy <[email protected]>
ที่มา: http://www.nsfocus.net
วันที่: 2003-09-03
(โปรดทราบว่าเนื่องจากฟอรัมจะประมวลผลอักขระบางตัวในบทความจึงเป็นการดีที่สุด
http://www.chinansl.com/czy/xmlhttp.txt อ่านบทความ
http://www.chinansl.com/czy/aspsky5.htm รหัสทดสอบ)
ฉันเชื่อว่าคุณคุ้นเคยกับการโจมตีสคริปต์ข้ามไซต์แล้ว แต่มีอยู่เสมอเมื่อคุณได้รับคุกกี้
คำถาม: ใช้ Window.Open เสมอเพื่อปรากฏขึ้นในแบบฟอร์มแล้วส่งคุกกี้ดังนั้นนี่คือความลับ
เป็นส่วนลดที่ยิ่งใหญ่ ฉันเคยคิดถึงวิธีการ insertadjacenthtml เพื่อฉีดคำสั่ง html ในหน้าเว็บ
วิธีการนี้แทบจะไม่สามารถส่งคุกกี้ได้โดยไม่ต้องใช้หน้าต่าง IE แต่ในการใช้งานจริงเช่นข้อผิดพลาดอาจเกิดขึ้น
ไม่มีวิธีที่ดีกว่านี้อีกไหม? ในอดีตเมื่อศึกษาการอัพเกรดไวรัส VBS อัตโนมัติฉันใช้ microsoft.xmlhttp
การควบคุม (การควบคุมนี้เป็นสิ่งที่มาพร้อมกับค่าเริ่มต้นใน Win98/2K และมันเป็นตัวควบคุม IE คิดว่าปลอดภัย!) ผ่านเรา
คุณสามารถส่งคำขอ HTTP ไปยังเว็บไซต์บนหน้าเว็บไม่ว่าจะโพสต์หรือรับ
ตกลงความคิดมาที่นี่ ลองใช้ ASPSKY5.00320 เป็นตัวอย่าง
เรารู้ว่า <imgsrc = "xxxxxx"> สามารถเขียนได้ใน SRC ด้วย vbscript: - ตัวอย่างเช่น
<imgsrc = "vbscript: a = (msgbox (ตอนนี้))"> แต่เราสามารถเรียกใช้คำสั่งเดียวได้เท่านั้นเช่น
<imgsrc = "vbscript: a = (msgbox (ตอนนี้)): b = (msgbox (ตอนนี้))"> สิ่งนี้จะผิด!
ฉันควรทำอย่างไร? ใน VBS เราสามารถใช้คำสั่งดำเนินการใน JS เราสามารถใช้ Eval!
ตัวอย่างเช่น: <imgsrc = "vbscript: execute (" a = (msgbox (ตอนนี้)): b = (msgbox ("czy" "")) ")">
หรือ <imgsrc = "JavaScript: eval ('Alert (/' nsfocus/'); แจ้งเตือน (/' czy/')')">>
ยังไม่เวียนหัวใช่มั้ย ดังที่ได้กล่าวไว้ข้างต้นคุณอาจสังเกตเห็นว่าเมื่อใช้คำสั่งการดำเนินการของ VBS ควรเปลี่ยนคำพูดสองครั้งเป็น "นี่เป็นเพราะ:
ใน VBS คำพูดเดียวจะต้องถูกปิดล้อมด้วยสตริงคำพูดสองใบเดียวแสดงถึงคำพูดหนึ่งและอีกคำพูดและภายในคำพูดสองเท่า!
ดังนั้นในคำสั่ง EXECUTE เราไม่สามารถใช้เครื่องหมายคำพูดเดียว แต่ใช้โดยตรง "เมื่อ HTML ตรงกับคำพูดที่ตรงกัน
มันจะตรงกับคำพูดหลังจาก src = "ดังนั้นเราจึงสามารถใช้งานได้เท่านั้น" แทน
ปัญหาเครื่องหมายใบเสนอราคาได้รับการแก้ไขแล้ว ในแอปพลิเคชันจริง Aspsky จะประมวลผลรหัสของเรา:
1: หากคุณพบสตริงสคริปต์คุณจะเพิ่มพื้นที่ก่อนหน้า
2: หากคุณพบสตริง HTTP มันจะถูกพิจารณาว่าเป็น URL และเพิ่มองค์ประกอบ <a> ทั้งสองด้าน
3: หากคุณพบช่องว่างคุณจะใช้แทน
แก้ปัญหา:
1: VBScript ถูกแทนที่ด้วย VBScript
2: ใช้ "" HT "" + "" TP ... แทน (มีแอปพลิเคชันมากกว่าหนึ่งคู่ในเครื่องหมายคำพูดและเครื่องหมายคำพูดใน VBS, + หมายถึงตัวเชื่อมต่อ)
3: ใช้พื้นที่แทน (หมายเหตุไม่ได้)
ในตอนท้ายมันเป็นปัญหาของการส่งคุกกี้:
1: การควบคุมสามารถรับหรือโพสต์เว็บไซต์ใด ๆ ในพื้นที่ แต่สามารถใช้ในหน้าเว็บเท่านั้น
รับโพสต์เซิร์ฟเวอร์ปัจจุบัน - - - มิฉะนั้นจะบอกว่าเขาจะปฏิเสธที่จะถาม!
2: คุกกี้ไม่สามารถมีอักขระที่มีการโต้ตอบพิเศษใน URL
แก้ปัญหา: