2.SQL injection vulnerability allowing login bypass
Ý kiến
0
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Lỗ hổng tấn công SQL injection cho phép vượt qua đăng nhập
Lỗi này xảy ra khi ứng dụng web nhận đầu vào từ người dùng (username/password) và đưa trực tiếp vào câu lệnh SQL để truy vấn cơ sở dữ liệu mà không qua khâu xử lý/làm sạch (sanitization).
Thông thường, mã backend của chức năng đăng nhập sẽ trông giống như thế này:
SELECT * FROM users WHERE username = '$username' AND password = '$password'
Khi bạn nhập administrator vào ô username, câu lệnh trở thành: SELECT * FROM users WHERE username = 'administrator' AND password = '...'
Tuy nhiên, bằng cách nhập administrator'--, bạn đã thay đổi cấu trúc câu lệnh SQL thành:
SQL
SELECT * FROM users WHERE username = 'administrator'--' AND password = '...'
Tại sao nó hoạt động?
Dấu nháy đơn ' đóng vai trò kết thúc giá trị của trường username sớm hơn dự kiến.
Chuỗi -- (hoặc # trong một số hệ quản trị CSDL) là ký tự ghi chú (comment) trong SQL. Khi máy chủ thấy --, nó sẽ bỏ qua toàn bộ phần còn lại của câu lệnh đứng sau đó (bao gồm cả việc kiểm tra mật khẩu).
Kết quả là câu lệnh chỉ còn: SELECT * FROM users WHERE username = 'administrator', và hệ thống sẽ đăng nhập bạn vào tài khoản administrator mà không cần biết mật khẩu.
Lab: SQL injection vulnerability allowing login bypass
APPRENTICE
LABSolved
This lab contains a SQL injection vulnerability in the login function.
To solve the lab, perform a SQL injection attack that logs in to the application as the administrator user.
ACCESS THE LAB
Solution
Use Burp Suite to intercept and modify the login request.
Modify the username parameter, giving it the value: administrator'--
Community solutions
Rana Khalil
z3nsh3ll
Michael Sommer
Find SQL injection vulnerabilities using Burp Suite
Try for free
Burp Suite
Web vulnerability scanner
Burp Suite Editions
Release Notes
Vulnerabilities
Cross-site scripting (XSS)
SQL injection
Cross-site request forgery
XML external entity injection
Directory traversal
Server-side request forgery
Customers
Organizations
Testers
Developers
Company
About
Careers
Contact
Legal
Privacy Notice
Modern Slavery Statement
Insights
Web Security Academy
Blog
Research
Follow us
© 2026 PortSwigger Ltd.
giải thíc lỗi ,và cách làm
Chào bạn! Đây là một bài lab kinh điển trong Web Security Academy về lỗi SQL Injection (SQLi). Dưới đây là giải thích chi tiết về bản chất lỗ hổng và cách thực hiện tấn công để vượt qua màn đăng nhập.
Lỗi này xảy ra khi ứng dụng web nhận đầu vào từ người dùng (username/password) và đưa trực tiếp vào câu lệnh SQL để truy vấn cơ sở dữ liệu mà không qua khâu xử lý/làm sạch (sanitization).
Thông thường, mã backend của chức năng đăng nhập sẽ trông giống như thế này:
SQL
SELECT * FROM users WHERE username = '$username' AND password = '$password'
Khi bạn nhập administrator vào ô username, câu lệnh trở thành:SELECT * FROM users WHERE username = 'administrator' AND password = '...'
Tuy nhiên, bằng cách nhập administrator'--, bạn đã thay đổi cấu trúc câu lệnh SQL thành:
SQL
SELECT * FROM users WHERE username = 'administrator'--' AND password = '...'
Tại sao nó hoạt động?
Dấu nháy đơn ' đóng vai trò kết thúc giá trị của trường username sớm hơn dự kiến.
Chuỗi -- (hoặc # trong một số hệ quản trị CSDL) là ký tự ghi chú (comment) trong SQL. Khi máy chủ thấy --, nó sẽ bỏ qua toàn bộ phần còn lại của câu lệnh đứng sau đó (bao gồm cả việc kiểm tra mật khẩu).
Kết quả là câu lệnh chỉ còn: SELECT * FROM users WHERE username = 'administrator', và hệ thống sẽ đăng nhập bạn vào tài khoản administrator mà không cần biết mật khẩu.
Để giải quyết lab này, bạn cần thực hiện theo các bước sau:
Mở Burp Suite: Đảm bảo rằng Burp Suite đang chạy và tính năng Intercept đang được bật.
Truy cập Login: Trên trang web của lab, điều hướng đến trang đăng nhập.
Bắt gói tin: Nhập bất kỳ username/password nào vào form đăng nhập và nhấn "Login". Gói tin sẽ bị chặn lại bởi Burp Suite.
Chỉnh sửa gói tin:
Trong thẻ HTTP history hoặc Proxy, bạn sẽ thấy gói tin POST /login.
Tìm tham số username trong phần body của yêu cầu.
Thay đổi giá trị của username thành: administrator'--
Lưu ý: Nếu bạn làm thủ công, hãy đảm bảo các ký tự đặc biệt được URL encoded (ví dụ: dấu ' có thể trở thành %27). Tuy nhiên, Burp Suite thường tự xử lý việc này cho bạn.
Gửi yêu cầu: Nhấn nút Forward trong Burp Suite để gửi gói tin đã chỉnh sửa tới máy chủ.
Kiểm tra kết quả: Quay lại trình duyệt. Nếu thực hiện đúng, bạn sẽ thấy mình đã đăng nhập thành công vào tài khoản administrator và lab sẽ báo "Solved".
Dấu cách: Sau ký tự -- thường cần một dấu cách (space) để trình biên dịch SQL hiểu đó là ký tự bắt đầu comment. Nếu -- không hoạt động, hãy thử -- (thêm một khoảng trắng sau đó).
Tại sao không cần password? Vì bạn đã "vô hiệu hóa" mệnh đề AND password = ... bằng cách comment nó đi, nên máy chủ không bao giờ kiểm tra mật khẩu của tài khoản đó.