Bỏ qua

SQLiHuh

Introduction

EHCTF

Category: Web

Write-up date: 03/03/2025

Question: easy one, don't worry

Source code

Point: 269 (nice)

Source code analysis

Đề bài cho không quá nhiều thông tin, chủ yếu hint cho ta là một lỗi gì đó liên quan tới sqli? (Thật ra bài này cũng chả liên quan tới sqli lắm). Lược qua source code thì ta có thể thấy hàm dumpUserInfo và hàm register là đáng chú ý

Ở đây, ta có thể thấy cả username và password đều được đặt là VARCHAR(64) mà khi đăng ký tài khoản mới, lập trình viên đã quên mất kiểm tra điều kiện Username phải bé hơn 64 ký tự nên ta hoàn toàn có thể dùng SQL trunction để tạo một tài khoản giả mới có cùng username và password khác, sau đó khi chúng ta đăng nhập lại thì hàm dumpUserInfo sẽ in ra cả password mới lẫn flag thông qua query $query = "SELECT * from users where username='$username'"; (ở đây là tìm kiếm thông qua username chứ không phải id nên sẽ in ra cả hai)

SQL trunction lợi dụng việc hệ thống database sẽ tự cắt bỏ phần thừa kki đẩy một xâu kí tự dài hơn độ dài được khai báo lúc đầu. alt text

Exploit

Đầu tiên, payload của chúng ta sẽ gồm tên tài khoản cần attack và

FLAG: EHCTF{SomeTIme5_EvERy7h1Ng_I5_EA5Y_7Han_y0u_ThlNK_:V_44380a08ef95}