Professional Documents
Culture Documents
Lab 5
Lab 5
MSSV: 17110211
Ta chỉ cần chặn phần xác định mật khẩu bằng lệnh
admin';#
Sử dụng công cụ dòng lệnh như Curl để thực hiện. Curl là một công cụ có thể gửi yêu cầu
HTTP, bao gồm nhiều tham số trong yêu cầu HTTP, cần đặt URL và các tham số giữa
một cặp dấu ngoặc đơn; nếu không, các ký tự đặc biệt dùng để phân tách các tham số
(chẳng hạn như &) sẽ được chương trình shell diễn giải, làm thay đổi ý nghĩa của lệnh.
V. SQL Injection attack on UPDATE Statement
1. Modify your own salary. Quan
sát dòng code
$hashed_pwd = sha1($input_pwd);
// Update the password stored in the session.
$_SESSION['pwd']=$hashed_pwd;
$sql = "UPDATE credential SET
nickname='$input_nickname',email='$input_email',address='$input_address',Password
='$hashed_pwd',PhoneNumber='$input_phonenumber' where
ID=$id;"; }else{
// If password field is empty.
$sql = "UPDATE credential SET
nickname='$input_nickname',email='$input_email',address='$input_address',PhoneNu
m ber='$input_phonenumber' where ID=$id;"; }
$conn->query($sql);
Điền
',salary='30000' where ID=1;#
Trong ví dụ này, bạn thấy rằng bạn đang sử dụng các biến người dùng (ví dụ:
$input_nickname) để xây dựng truy vấn SQL mà không có sự kiểm tra hoặc xử lý đặc
biệt. Điều này tạo ra một cơ hội cho người dùng chèn các đoạn mã SQL bất hợp pháp vào
truy vấn.
Nếu người dùng nhập ',salary='30000' where ID=1;# vào trường Nickname, thì sau khi
truy vấn được thực hiện, truy vấn SQL sẽ trở thành:
UPDATE credential SET nickname='',salary='30000' where ID=1;#
Sau đó ta có thể đăng nhập thành công vào tài khoản Alice bằng mật khẩu của mình là
aaaaaa
4. Countermeasure – Prepared Statement
Chỉnh sửa code
$sql = "SELECT name, local, gender
FROM User
WHERE id = $id AND password =$pwd ";
$res = $conn->query($sql);