מחשביםתכנות

מהי הזרקת SQL?

מספר אתרים ודפים באינטרנט גדל בהתמדה. צילום לפיתוח כל מי שיכול. מפתחי אינטרנט טירון מרבים להשתמש בקוד בטוח וישן. וזה יוצר הרבה פרצות עבור פושעים והאקרים. ממה שהם. אחת מנקודות התורפה הקלסית ביותר - SQL-הזריקה.

קצת תיאוריה

אנשים רבים יודעים כי הרוב המכריע של אתרים ושירותים ברשת משתמש אחסון הנתונים SQL. זוהי שפת שאילתות מובנית המאפשרת לך לשלוט ולנהל את האחסון של נתונים. ישנן גרסאות רבות ושונות של מסד הנתונים של מערכת ניהול מסדי נתונים - Oracle, MySQL, Postgre. לא משנה את השם והסוג, הם משתמשים באותם נתוני שאילתא. זה מקום שבו טמון הפוטנציאל פגיע. אם היזם לא הצליח להתמודד כראוי ובבטחה לבקש, תוקף יכול לנצל את זה ולהשתמש טקטיקות מיוחדות כדי לקבל גישה למסד הנתונים, ולאחר מכן - ולכל הנהלת האתר.

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

בדוק הזרקת SQL

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

לדוגמה, יש nekiy_sayt / index.php? Id = 25

הדרך הקלה ביותר - כדי לשים 25 לאחר הציטוט ולשלוח את הבקשה. אם אין שגיאה, או באתר ולסנן את כל הבקשות מטופלות כראוי, או מושבת בהגדרות של התפוקה שלהם. אם דף נטען מחדש עם הבעיות, אז את הפגיעות כדי הזרקת SQL הן.

לאחר שנודע לה, אתה יכול לנסות להיפטר ממנו.

כדי ליישם צורך הפגיע לדעת קצת על צוותות SQL-שאילתות. אחד מהם - UNION. הוא מפגיש מספר תוצאות השאילתה לתוך אחד. אז נוכל לחשב את מספר השדות בטבלה. השאילתה הראשונה דוגמה לכך היא:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1.

ברוב המקרים, התקליט הזה צריך לייצר שגיאה. משמעות הדבר היא כי מספר שדות אינו שווה ל 1. לפיכך, בחירת אפשרויות של 1 או יותר, אפשר להקים המספר המדויק שלהם:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1,2,3,4,5,6.

כלומר, כאשר השגיאה לא תופיע יותר, זה אומר כי מספר השדות לנחש.

יש גם פתרון חלופי לבעיה זו. לדוגמא, כאשר מספר רב של תחומים - 30, 60 או 100. זה חפ"ק BY. הקבוצות זה את התוצאות של שאילתה על כל עילה, עבור id למשל:

  • nekiy_sayt / index.php? id = 25 GROUP BY 5.

אם השגיאה טרם התקבלה, אז בתחומים יותר 5. לכן, ההחלפה של אפשרויות ממגוון רחב למדי, אפשר לחשב כמה מהם באמת.

SQL-הזרקת דוגמה זו - למתחילים שרוצים לנסות את עצמם בדיקה של האתר שלה. חשוב לזכור כי עבור גישה בלתי מורשית במאמר אחר זמין של החוק הפלילי.

הסוגים העיקריים של הזרקה

הטמע פגיעות ידי הזרקת SQL בכמה התגלמויות. הבא הן השיטות הפופולריות ביותר:

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

  • שגיאה מבוססת הזרקת SQL. כפי שהשם מרמז, זה סוג המשתמש גם שגיאה, לשלוח הבעות מורכבות מבחינה תחבירית שגוי. ואז יש את היירוט של כותרות התגובה, ניתוח אשר יכול להתבצע מאוחר הזרקת SQL.

  • Stacked מתשאל את SQL הזרקה. פגיעות זו נקבעת על ידי ביצוע בקשות רצופות. הוא מאופיין על ידי תוספת בסוף הסימן ";". גישה זו מיושמת לעיתים קרובות כדי לגשת ליישום נתונים קרוא וכתוב או מערכת ההפעלה פונקציות, אם הרשאות מאפשרים זאת.

תוכנה לחיפוש-פגיעויות SQL

האם יש עבור הזרקת SQL, התוכנית יש בדרך כלל שני מרכיבים - אתר לסרוק לאיתור פרצות אפשריות ולהשתמש בהם כדי לקבל גישה לנתונים. ישנם כמה כלים עבור פלטפורמות כמעט כל ידוע. הפונקציונליות שלהם מאוד מקל בדיקת אתר לפצח-הזרקת SQL שלך.

Sqlmap

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

התקנה על לינוקס מתבצעת באמצעות הפקודות:

  • Git שיבוט https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • cdsqlmap-dev /,
  • --wizard ./sqlmap.py.

עבור Windows זמין כאופציה עם שורת הפקודה ואת ממשק משתמש גרפי.

הזרקת jSQL

הזרקת jSQL - כלי חוצה פלטפורמות לבדיקת השימוש פגיעויות SQL. נכתב ב- Java, כך שהמערכת חייבת להיות מותקנת JRE. מסוגל להתמודד עם GET בקשות, POST, כותרת, עוגיה. יש לה ממשק גרפי נוח.

ההתקנה של חבילת תוכנה זו היא כדלקמן:

wget https://github.com/`curl -s https: //github.com/ron190/jsql-injection/releases | grep-E -O "/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] . {1,2} [0-9] {1,2} צנצנת "| ראש-n 1`

השקה היא באמצעות Java הפקודה-jar ./jsql-injection-v*.jar

על מנת להתחיל באתר המבחן על-פגיעות SQL, עליך להזין את הכתובת בשדה העליון. הם נפרדים GET ו- POST. עם תוצאה חיובית, רשימת השולחנות פנויים תופיע בחלון השמאלי. אתה יכול לצפות בהם וללמוד קצת מידע סודי.

«דף Admin» הכרטיסייה השתמש כדי למצוא את הלוחות המנהליים. ביום זה באמצעות תבניות מיוחדות אוטומטית חיפושי המערכת מתעדת משתמשים חסויים. מתוך אותם אתה יכול לקבל רק הצפנה של הסיסמה. אבל יש לו בארגז הכלים של התוכנית.

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

SQLi משליך V.7

תכנית זו - קלה לשימוש כלי למציאה ויישום פגיעויות SQL. זה מייצר האו"ם מבוססת על דורקס שנקרא. הרשימה שלהם ניתן למצוא באתר האינטרנט. דורקה עבור הזרקת SQL - אלה הם תבניות מיוחדות של שאילתות חיפוש. בעזרתם, ניתן למצוא באתר פגיע פוטנציאלי באמצעות כל מנוע חיפוש.

כלים להכשרה

Itsecgames.com באתר יש סט מיוחד של כלים המאפשר הדוגמא מראה כיצד לעשות הזרקת SQL ולבדוק אותו. על מנת להפיק תועלת, יש צורך להוריד ולהתקין. הארכיון מכיל סט של קבצים, המהווה את המבנה של האתר. כדי להתקין אותו יצטרכו במערכת הקיימת של סט של שרת האינטרנט Apache, MySQL ו- PHP.

לפרוק את הארכיון בתיקייה בשרת אינטרנט, אתה צריך ללכת לכתובת שהוזנה בעת ההתקנה זו תוכנה. דף עם רישום משתמש. כאן אתה צריך להזין את הפרטים ולחץ «צור». העברת המשתמש למסך חדש, והמערכת תבקש ממך לבחור באחת מקרי מבחן. יש ביניהם שניהם תארו בזריקה, ופריטי מבחן רבים אחרים.

ראוי בהתחשב דוגמא GET סוג SQL-הזרקה / חיפוש. כאן אתה צריך לבחור אותו ולחץ «האק». לפני שהמשתמש יופיע, ואת חיקוי מחרוזת החיפוש באתר סרטים. כדי למיין סרטים יכולים להיות ארוכים. אבל יש רק 10. לדוגמה, אתה יכול לנסות להיכנס איירון מן. זה יציין את הסרט, אז האתר עובד, והשולחנות שהוא מכיל. עכשיו אנחנו צריכים לבדוק אם מסנני תסריט תווים מיוחדים, ב ציטוט מסוים. כדי לעשות זאת, להוסיף "בשורת הכתובת." יתר על כן, זה חייב להיעשות לאחר הכותרת של הסרט. האתר ייתן שגיאה שגיאה: יש לך שגיאה בתחביר SQL שלך; לבדוק את המדריך מתאים לגרסת שרת MySQL שלך עבור הזכות להשתמש בתחביר ליד "%" "בקו 1, הקובע כי הדמויות עדיין לא טפלו כראוי. אז אתה יכול לנסות להחליף את בקשתך. אבל תחילה עלינו לחשב את מספר השדות. הוא משמש עבור הזמנה זו על ידי, אשר הציגה אחרי המירכאות: http://testsites.com/sqli_1.php?title=Iron+Man "סדר לפי 2 - & action = חיפוש.

פקודה זו מציגה מידע רק על הסרט, כי הוא, מספר השדות עולה 2. המקף הכפול קורא לשרת כי הבקשות האחרות חייבות להיות מושלכות. עכשיו אנחנו צריכים לברר, לשים חשיבות גוברת עוד השגיאה אינה מודפסת. בסופו של הדבר, מתברר כי השדות יהיו 7.

עכשיו הגיע הזמן לקבל משהו מועיל מתוך הבסיס. האם לשנות את הבקשה מעט בשורת הכתובת, ולהבאתו צורה: איגוד http://testsites.com/sqli_1.php?title=Iron+Man לבחור 1, מסד נתונים (), משתמשים (), 4, סיסמא, 6, 7 ממשתמשים - & action = חיפוש. כתוצאת ביצועה היה להציג את המחרוזת עם hashes הסיסמה, אשר ניתן להמיר בקלות לתוך סימנים מובנים באמצעות אחד השירותים המקוונים. העלה מעט והרים שם שדה עם כניסה, אתה יכול לקבל גישה של מישהו אחר, כגון מנהל האתר.

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

הזרקה ו- PHP

ככלל, את קוד PHP ו אחראי בקשות עיבוד ההכרחיות קרובים מהמשתמש. לכן, ברמה זו אתה צריך לבנות הגנה נגד-הזרקת SQL ב- PHP.

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

  • נתונים תמיד חייבים להיות מעובד לפני שיוצב לתוך מסד הנתונים. זה יכול להיעשות גם באמצעות ביטויים קיימים, או על ידי ארגון שאילתות ידני. גם כאן, צריך לקחת בחשבון כי הערכים המספריים מומרים הסוג נחוץ;
  • נמנע מתבקש מבני בקרה שונים.

עכשיו קצת על הכללים של עריכת שאילתות MySQL כדי להגן מפני SQL-זריקה.

בעריכת כל ביטויים לשאילתה חשוב להפריד את נתוני מילות מפתח SQL.

  • * לבחור מתוך טבלת WHERE name = Zerg.

בתצורה זו, המערכת עשויה לחשוב כי Zerg - בשם בכל תחום, אז אתה צריך במרכאות.

  • SELECT * FROM השולחן WHERE name = 'Zerg'.

עם זאת, ישנם מקרים שבהם הערך עצמו מכיל ציטוטים.

  • SELECT * FROM השולחן WHERE name = 'חוף השנהב'.

הנה רק לטפל בחלק קוטה ד, והשאר יכול להיתפס כצוות, אשר, כמובן, לא. לכן, מתרחשת שגיאה. אז אתה צריך את זה סוג של נתוני הקרנה. כדי לעשות זאת, להשתמש מהלך סרק - \.

  • SELECT * FROM שולחן WHERE name = 'החתול-ד \' שנהב".

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

ישנן המלצות ששם השדה חייב להיות מוקף backquotes. סמל זה נמצא בצד שמאל של המקלדת, יחד עם טילדה "~". זו היא להבטיח כי MySQL יכול במדויק להבחין השם של השדה מן מילת המפתח שלך.

עבודה דינמית עם נתונים

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

  • SELECT * FROM השולחן שבו מספר = '$ מספר'.

הנה, את מספר $ משתנה מועבר בקביעת הערך של השדה. מה יקרה אם הוא מקבל "חוף שנהב"? שגיאה.

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

עבור התוספת העצמאית של קו נטוי יכול להשתמש mysql_real_escape_string.

$ מספר = mysql_real_escape_string (מספר $);

$ לשנה = mysql_real_escape_string (בשנת $);

$ Query = "INSERT INTO השולחן (מספר, לשנה, בכיתה) ערכים ( 'מספר $', '$ בשנה', 11)".

למרות הקוד והגדילה בנפח, אך פוטנציאל זה יעבוד הרבה יותר בטוח.

מציינים

Placeholders - מעין סמנים עבורו המערכת מזהה כי זה המקום שאתה צריך להחליף תפקיד מיוחד. לדוגמה:

= $ סאטה $ mysqli-> להכין ( "SELECT המחוזי ממספר איפה? Name =");

$ Sate-> bind_param ( "ים", מספר $);

$ Sate-> להורג ();

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

מה יכול תוקף

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

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

הבא הוא גניבה של מידע אישי של מבקרים. כיצד להשתמש - הכל מוגבל רק על ידי הדמיון של האקר. אבל בכל מקרה, התוצאות לא תהיינה מאוד נעימות. במיוחד אם הכיל מידע פיננסי.

כמו כן, התוקף יכול למזג מסד עצמך ולאחר מכן לסחוט כסף עבור החזרתו.

משתמש מידע שגוי מטעם מנהל האתר, האדם הם אינם מתנהגים, יכול להיות גם השלכות שליליות כעובדות הונאה אפשריות.

מסקנה

כל המידע במאמר זה מסופק למטרות אינפורמטיביות בלבד. השתמש בו רק צריך לבדוק פרויקטים משלהם כאשר הוא מזהה נקודות תורפה ולטיפול בהם.

למחקר מעמיק יותר של טכניקות של איך לנהל הזרקת SQL, יש צורך להתחיל עם יכולות מחקר בפועל ותכונות של שפת SQL. כפי שאילתות הידור, מילות מפתח, סוגי נתונים, ושימוש בכל זאת.

כמו כן לא ניתן לעשות בלי להבין את הפעולה של פונקציות אלמנטים PHP ו- HTML. השימוש העיקרי נקודות פגיעות להזרקה - קו כתובת, בשדה חיפוש שונה. לימוד פונקציות PHP, ואופן יישומו ותכונות יהיה להבין איך להימנע מטעויות.

הנוכחות של כלי תוכנה רבים מוכנים לאפשר ניתוח מעמיק על הפרצות מוכרות באתר. אחד המוצרים הפופולריים ביותר - לינוקס kali. תמונה זו של מערכת הפעלה מבוססת לינוקס, אשר מכילה מספר רב של כלים ותוכניות שיכולים לבצע ניתוח מקיף של חוזק אתר.

מה שאתה צריך לדעת איך לפרוץ לאתר? זה פשוט מאוד - יש צורך להיות מודע לגבי נקודות התורפה האפשריות של הפרויקט או אתר האינטרנט שלך. במיוחד אם מדובר בחנות מקוונת עם תשלום מקוון, שבו נתוני ההשתמש תשלום ניתנים לפריצה על ידי תוקף.

לצורך המחקר המקצועי של אנשי אבטחת מידע קיימים תוכל לבדוק את האתר עבור מגוון רחב של קריטריונים ועומק. החל מ זריקות-HTML פשוט כדי הנדסת פישינג חברתית.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 iw.unansea.com. Theme powered by WordPress.