Người hướng dẫn: Bây giờ để thử và khám phá SQL injection,
bạn cần duyệt qua mục tiêu của mình và
cố gắng ngắt từng trang.
Vì vậy, bất cứ khi nào bạn nhìn thấy một
hộp văn bản hoặc một tham số trên biểu
mẫu này, ví dụ, trang. php sau đó một cái gì đó bằng một cái gì đó,
cố gắng để tiêm các thứ ở đây.
Vì vậy, hãy cố gắng sử dụng một câu trích
dẫn duy nhất, cố gắng sử dụng dấu và hoặc thứ tự theo câu lệnh,
để ngắt trang và làm cho trang trông khác đi.
Vì vậy, tôi sẽ chỉ cho bạn một ví dụ ở đây.
Và tôi sẽ vào trang đăng nhập trước, ngay tại đây.
Và nó yêu cầu tôi đăng nhập ngay bây giờ.
Nhưng tôi thực sự đã đăng ký bằng tên của chính mình.
Vì vậy, bạn chỉ cần vào đây và đăng ký.
Tôi có tên người dùng là
Zaid và mật khẩu có một hai ba bốn năm sáu.
Vì vậy, trước tiên, chúng ta hãy ...
Tôi sẽ đăng nhập chỉ để cho bạn thấy, vì vậy.
Tên người dùng của tôi
là Zaid và mật khẩu của tôi là một hai ba bốn năm sáu.
Và bây giờ tôi đã đăng nhập với tên
Zaid và chữ ký của tôi là aa.
Nó chỉ thực sự không có gì, giống như một bài kiểm tra.
Vì vậy, tôi sẽ đăng xuất và
chúng tôi trở lại trang đăng nhập.
Ngay tại đây, chúng tôi có trang để
bạn có thể thử tiêm vào đó.
Nhưng chúng ta sẽ nói về điều đó sau, vì vậy.
Hiện tại, chúng
tôi đang có một ví dụ về việc chèn vào các hộp văn bản.
Vì vậy, bạn có thể thử nhập
tên và mật khẩu.
Vì vậy, tôi sẽ đặt tên tôi là Zaid và tôi sẽ đặt
một câu trích dẫn duy nhất.
Vì vậy, tôi đang đặt dấu hiệu này vào mật khẩu của mình.
Vì vậy, chúng ta hãy xem nếu chúng ta có thể phá vỡ nó.
Và như bạn có thể thấy bây giờ, có một
lỗi đang được hiển thị cho chúng tôi.
Và nó không giống như một lỗi bình thường,
nó giống như một lỗi cơ sở dữ liệu.
Và thường thì bạn sẽ rất may mắn nếu gặp
lỗi như thế này.
Bây giờ thông thường lỗi sẽ không nhiều thông tin như thế này.
Đôi khi bạn sẽ thấy rằng trang
không hoạt động như mong đợi, như
bạn mong đợi.
Đôi khi nó sẽ chỉ là một
trang trông không như ý.
Ví dụ: nếu đó là một trang tin
tức, có thể nó sẽ bị thiếu bài viết hoặc nếu
là blog, nó sẽ thiếu một trong các bài đăng hoặc
loại bài đăng khác.
Vì vậy, bạn cần để mắt đến những gì đang thay đổi.
Trong ví dụ này, chúng tôi thực sự đang gặp một lỗi rất hay.
Nó cho chúng tôi biết nó có tệp
nào và nó cho chúng tôi biết rằng có lỗi trong câu lệnh.
Và lỗi gần dấu ngoặc kép mà chúng tôi đã thêm vào.
Và nó cũng cho chúng ta biết câu lệnh đang được thực thi.
Điều này thực sự tốt cho việc học.
Vì bây giờ chúng ta có thể thấy câu lệnh
mà hệ thống đang cố gắng chạy là gì.
Và hệ thống đang cố gắng thực hiện một lựa chọn *.
Vì vậy, nó đang cố gắng chọn mọi thứ từ các tài khoản,
trong đó tên người dùng bằng Zaid
và mật khẩu bằng một dấu ngoặc kép.
Và lưu ý rằng hệ thống ứng dụng
web đã thêm dấu ngoặc kép
xung quanh tên.
Vì vậy, khi tôi nói Zaid, nó đã thêm Zaid vào giữa hai dấu ngoặc kép.
Và nó đã thêm một câu trích dẫn
duy nhất mà tôi đã thêm vào giữa hai câu trích dẫn khác.
Vì vậy, đó là lý do tại sao chúng tôi có ba câu trích dẫn ngay sau đây.
Vì vậy, từ đó, chúng
ta có thể, giống như 70% trang web mục tiêu,
có chèn SQL.
Chúng tôi vẫn không chắc
liệu nó có thể thực thi những gì chúng tôi muốn hay không.
Vì vậy, tôi có thể thực sự chèn mã và
làm cho nó được thực thi không?
Hãy xem liệu chúng ta có thể làm được điều đó không.
Vì vậy, tên người dùng sẽ lại là Zaid.
Và những gì tôi sẽ làm với
mật khẩu, tôi sẽ đặt mật khẩu của mình.
Vì vậy, tôi sẽ đặt một hai ba bốn năm sáu và
sau đó tôi sẽ đóng nó lại.
Vì vậy, tôi sẽ cho bạn biết lý
do tại sao tôi đóng nó, bởi vì câu lệnh
hiện tại thông qua hệ
thống là select * from, thành Zaid
và, bằng.
Và nó sẽ tự mở ra một câu trích dẫn.
Vì vậy, hãy gọi mật khẩu S này.
Vì vậy, chúng tôi đang coi đây là một biến.
Và tôi cần bất cứ thứ gì tôi bỏ vào đây, bất cứ
thứ gì tôi sẽ bỏ vào chiếc hộp này.
Và nó sẽ chèn nó thay vì mật khẩu S, đây
là một biến.
Vì vậy, tôi chỉ cho bạn một ý tưởng,
vì vậy bạn cần phải có thể tưởng tượng điều này xảy ra.
Vì vậy, nó lấy bất cứ thứ gì tôi đưa vào đó, và nó
sẽ đặt nó giữa hai dấu ngoặc kép.
Và nó sẽ được đưa vào đó và thực
thi trên hệ thống.
Vì vậy, những gì tôi
đang làm là, tôi sẽ đặt một hai ba bốn năm
sáu và tôi sẽ tự thêm trích dẫn.
Vì vậy, những gì tôi sẽ làm ngay bây giờ,
mã sẽ như thế này.
Vì vậy, nó sẽ chọn cái này, và mật
khẩu bằng cái đó.
Và tôi có hai câu trích dẫn ngay bây giờ, được rồi.
Và sau đó những gì tôi
sẽ làm là, tôi
sẽ nói và, một bằng một.
Vì vậy, một bằng một.
Và tôi chỉ đang cố gắng xem liệu
nó có thực hiện những gì tôi muốn nó làm hay không.
Vì vậy, tuyên bố của tôi ngay bây giờ
là, nó sẽ là Chọn * từ các tài khoản,
trong đó tên người dùng bằng Zaid
và mật khẩu bằng một hai ba bốn năm sáu.
Và lưu ý, tôi sẽ tự chèn cái này
và những cái bằng một.
Một vấn đề mà hệ thống sẽ phàn nàn, đó là
chúng tôi có thêm một trích dẫn
ở đây, bởi vì tôi sẽ tự mình chèn cái này vào hộp văn bản.
Vì vậy, nó sẽ phàn nàn về điều
này, nó sẽ nói rằng đây là một mã mở và
chưa bao giờ được đóng lại.
Vì vậy, những gì tôi sẽ làm là tôi sẽ thêm bình luận.
Và khi bạn thêm bình luận,
về cơ bản mọi thứ xuất hiện sau bình luận sẽ
không được thực thi.
Tôi sẽ sử dụng hàm băm làm bình luận.
Vì vậy, bất kỳ thứ gì xuất hiện sau
khi băm, hệ thống sẽ bỏ qua.
Vì vậy, tôi sẽ tiêm bây giờ sẽ là cái này, và cái này
bằng cái này và cái này, vì vậy như tôi đã nói, thông thường
những gì bạn có ở đây, bạn đã cắt mật khẩu
của mình, hoặc tùy thuộc vào chương
trình được gọi là gì, chỉ để tưởng
tượng đây.
Và tôi sẽ nhét cái này vào bên trong.
Vì vậy, khi bạn làm điều đó và bạn chèn nó vào bên trong, đây
là mã sẽ trông như thế nào.
Vì vậy, nó sẽ giống như tên người dùng
phù hợp, mật khẩu
phù hợp và một bằng một, đó là sự thật.
Và sau đó nó sẽ không,
nó sẽ bỏ qua câu trích dẫn này ngay tại đây.
Vì vậy, nếu chúng tôi dán cái
này, chúng tôi sẽ có thể đăng nhập.
Nó sẽ cho phép tôi đăng nhập.
Và hoàn hảo, chúng tôi đã có thể đăng nhập và tên người dùng là Zaid.
Cho đến nay, chúng tôi đã không làm bất cứ điều gì.
Nhưng loại này cho chúng ta thấy rằng nó đang chạy mã của chúng ta?
Hãy thử một điều khác.
Bây giờ, chúng ta hãy thử thêm một tuyên bố sai.
Vì vậy, chúng tôi đã thực hiện một bằng nhau, và
điều đó là chính xác và nó được thực thi khi chúng tôi muốn.
Hãy thử một bằng hai.
Và điều này là sai.
Vì vậy, tôi có mật khẩu phù hợp.
Và tôi có tên người dùng phù
hợp, và một bằng hai.
Và điều này sẽ sai bởi vì nó sai một
không bằng hai và tôi đang
sử dụng một và vì vậy mọi thứ phải đúng.
Vì vậy, nó sẽ cho tôi một lỗi
mặc dù tôi sẽ đặt đúng tên người dùng và tôi sẽ
đặt đúng mật khẩu.
Vì vậy, tôi đang đặt một hai ba bốn
năm sáu và một bằng hai.
Vì vậy, nó sẽ giống như, ồ, điều này là sai.
Và như bạn có thể thấy, nó đã cung cấp cho tôi lỗi
xác thực, tên người dùng hoặc
mật khẩu không hợp lệ, mặc dù tôi đã cấp đúng mật khẩu
và đúng tên người dùng.
Vì vậy, điều này xác nhận rằng trang web này thực sự đang đưa
bất cứ thứ gì chúng ta muốn vào mật khẩu.
Vì vậy, chúng ta có thể sử dụng trường mật khẩu để chèn mã SQL.
Và nó sẽ luôn ở dạng này.
Vì vậy, chúng tôi sẽ đặt một
mật khẩu và bạn sẽ đặt mã của bạn ở đây, vì
vậy tôi sẽ đặt nó bằng mã viết hoa ở đây.
Bởi vì chúng ta sẽ đặt một mật khẩu, đóng dấu ngoặc kép
và sau đó đặt mã mà chúng ta muốn thực thi
trên hệ thống ngay tại
đây và nó sẽ được thực thi trên hệ thống đích.