Người hướng dẫn: Được rồi, bây
giờ tôi muốn cho bạn xem một SQL injection và trong
một tệp khác và trong
một trang khác và tôi sẽ chỉ cho bạn một vài điều
khác nhau mà bạn có thể làm để khai thác lỗ hổng.
Vì vậy, điều đầu tiên tôi sẽ truy cập trang
đăng nhập ở đây.
Thông tin người dùng.
Vì vậy, lần đầu tiên chúng tôi đi đến trang Đăng nhập từ đó, lần này chúng
tôi đi đến trang Thông tin người dùng.
Vì vậy, trang này sẽ hiển thị cho bạn thông tin về người dùng
với điều kiện bạn cung cấp tên người dùng và mật khẩu.
Vì vậy, tôi sẽ làm zaid
và tôi sẽ đặt mật khẩu của mình, 123456.
Và nó sẽ hiển thị thông tin chi tiết, tên người dùng và mật khẩu và chữ
ký của tôi dưới dạng aa.
Vì vậy, câu lệnh đang được thực thi ở đây
tương tự như câu lệnh đang được thực thi khi
bạn đăng nhập.
Vì vậy, chọn dấu sao từ các tài khoản
trong đó tên người dùng là những gì bạn đặt trong trường người
dùng và mật khẩu là những gì bạn đặt trong trường mật khẩu.
Vì vậy, những gì chúng ta sẽ làm
bây giờ là chúng ta sẽ thấy một cách khác để
khai thác loại lỗ hổng này.
Trong video trước,
chúng tôi đã làm điều đó bằng cách sử dụng hộp văn bản ĐĂNG.
Vì vậy, bất cứ điều gì bạn đưa
vào hộp văn bản đã được đăng bằng phương thức ĐĂNG lên ứng dụng web.
Giờ đây, những lỗ hổng này có thể tồn tại trong GET.
Và ý tôi muốn nói về Get,
là khi bạn thực hiện Get khi một thứ gì đó được gửi dưới dạng GET,
bạn sẽ thấy nó ở đây trong URL.
Vì vậy, nếu bạn nhìn vào
URL ở đây, bạn sẽ thấy nó được gửi dưới dạng tên người
dùng zaid và mật khẩu 123456.
Vì vậy, hãy để tôi chỉ cần sao chép URL này ở đây.
Và chúng tôi sẽ bắt đầu
chơi với nó từ URL thay vì thực hiện trên trang web.
Tôi chỉ muốn cho bạn thấy
một ví dụ khác vì ở nhiều nơi,
thậm chí có thể không có hộp
văn bản, ví dụ, nó có thể là một cái gì đó
như tin tức và tin tức. php, vì vậy chúng ta có thể thấy ở đây, ví dụ, trong
ví dụ này, đó là chỉ mục. php.
Và trong bài kiểm tra bút của bạn, bạn có thể thấy
một cái gì đó giống như tin tức. php và ví dụ:
id bằng hai và sau đó bạn có thể
thử đưa nội dung vào đó.
Vì vậy, chúng tôi đang có một
ví dụ ở đây, nơi chúng tôi sẽ đưa
mọi thứ vào trường tên người dùng, đó là trường
này và chúng tôi sẽ đưa nội dung vào đây.
Vì vậy, bất cứ khi nào bạn đang kiểm tra bút, bất
kỳ lúc nào bạn nhìn thấy các thông số như thế này,
bạn nên thử tiêm chúng.
Bất cứ lúc nào bạn nhìn thấy một cái gì đó. php và sau đó bạn
có một tham số bằng một cái gì đó, sau đó luôn
cố gắng đưa nội dung vào đó và xem liệu nó có phù
hợp với bạn không.
Vì vậy, chúng tôi cũng đã thấy một cách để phát hiện
ra phần chèn và đó là sử dụng dấu ngoặc kép và sử
dụng dấu và.
Vì vậy, chúng tôi thực hiện một sai và một đúng
và và một bằng một
và sau đó và một bằng hai và nếu
máy chủ đang thực thi những gì chúng tôi muốn, thì chúng
tôi sẽ biết rằng có một SQL injection.
Tôi sẽ chỉ cho bạn
một cách khác để khám phá những
khai thác này và đó là sử dụng thứ tự của.
Như tên cho thấy, thứ
tự theo câu lệnh được sử dụng để sắp
xếp các kết quả mà chúng tôi nhận được trên màn hình
dựa trên một cột cụ thể.
Vì vậy, mũi tiêm của chúng tôi sẽ như thế này.
Vì vậy, tôi sẽ đặt hàng từng món một.
Vì vậy, điều này, nếu sự tiêm vào tồn tại, điều này
sẽ hoạt động vì
trong mỗi câu lệnh select, phải
có ít nhất một cột đang được chọn.
Do đó, khi chúng tôi nói thứ tự
từng cái, chúng tôi đang nói rằng tôi muốn sắp
xếp các kết quả dựa trên
cột đầu tiên, do đó, điều này phải luôn được cơ sở
dữ liệu chấp nhận.
Và trả lại một sự thật hoặc một cái gì đó mà chúng tôi mong đợi.
Chúng tôi cũng cần thêm nhận xét
vào đây và thực thi mã này.
Vì vậy, nó chính xác như trước đây.
Vì vậy, khi chúng tôi đang
làm điều này, về cơ bản đây là URL của chúng tôi và những gì sẽ xảy
ra trên cơ sở dữ liệu, vì vậy đây
là mã đang được thực thi trên
cơ sở dữ liệu, nó sẽ trông như thế này.
Vì vậy, nó sẽ được chọn sao từ các
tài khoản có tên người dùng bằng
zaid và lưu ý rằng điều này đang đóng báo giá
như thế nào và chúng tôi sẽ thực hiện đơn đặt hàng từng người một
và không nên có mã này cho và và nhận
xét này sẽ cho biết Trình thông dịch SQL để bỏ qua bất kỳ thứ gì xuất
hiện sau nó nên tất cả điều này
sẽ bị bỏ qua.
Vì vậy, tôi đang sao chép điều này.
Vì vậy, bạn thực sự có thể dán lần tiêm này cho
thứ tự zaid vào tên ngay tại đây
và điều đó sẽ hoạt động nhưng một lần nữa, tôi
chỉ muốn chỉ cho bạn một cách thực hiện
khác bằng cách tiêm nó qua trình duyệt.
Một điều nữa mà tôi muốn
bạn lưu ý là khi bạn
đưa nội dung vào trình duyệt, trình duyệt, mã phải được mã hóa.
Vì vậy, ví dụ, dấu hiệu này thường,
khi bạn đặt nó trên URL,
nó sẽ được viết là% 23.
Ví dụ: dấu cách được chuyển đổi thành%
20 và% 23 là nhận xét mà chúng tôi đang sử dụng.
Vì vậy, tôi sẽ sao chép nó và thay thế ký hiệu bình luận của tôi bằng nó.
Bây giờ, bạn có thể google Bộ mã hóa HTTP và
bạn sẽ thấy trực tuyến có các công cụ trực
tuyến sẽ chỉ chuyển đổi điều này cho bạn.
Đối với tôi, bây giờ tôi biết rằng thẻ bắt đầu bằng
# có thể được chuyển đổi thành% 20.
Vì vậy, đó là lý do tại sao tôi đang sử dụng nó ở đó.
Và tôi sẽ nhấn Enter.
Và như bạn có thể thấy bây
giờ, chúng tôi đang thấy điều gì đó có thể chấp nhận được.
Không có gì sai và sau đó nó hiển thị cho tôi
thông tin về zaid 123456 và cho tôi xem chữ ký.
Vì vậy, nó đang bỏ qua mật khẩu,
vì vậy tiêm đã hoạt động và nó
sắp xếp theo thứ tự nên nó không hiển
thị cho tôi bất cứ điều gì sai.
Hãy cố gắng biến số một này thành một con số rất lớn, vì
vậy tôi sẽ đưa vào 10.000 hoặc 100.000 ngay bây giờ.
Vì vậy, những gì chúng
tôi đang nói ngay bây giờ là tôi muốn
bạn sắp xếp các kết quả sẽ được trả về bởi câu lệnh select
hiện tại dựa trên cột 100.000.
Bây giờ rất có thể không có 100.000 cột được sử dụng
trong câu lệnh select này
và do đó điều này sẽ trả về một lỗi.
Vì vậy, khi tôi thực hiện điều
này, bạn sẽ thấy rằng có lỗi.
Và lỗi là ở thứ tự đóng.
Và vẫn còn một cột Không xác định với giá 100.000 và điều này thật tuyệt vì bây
giờ chúng ta biết rằng cơ sở dữ liệu
đang thực thi những gì chúng ta muốn.
Vì vậy, khi chúng tôi yêu cầu nó sắp xếp kết quả
dựa trên cột đầu tiên, nó cho chúng tôi thấy kết quả.
Vì vậy, nó làm theo những gì chúng tôi
đã nói với nó và sau đó
khi chúng tôi yêu cầu nó sắp xếp kết quả dựa trên một cột
không tồn tại, nó đã cho chúng tôi một lỗi.
Vì vậy, nó rõ ràng là dễ bị tiêm SQL.