# SQL injection 💉💉 ![image](https://hackmd.io/_uploads/SyBciSFnA.png) ## level 1 - dùng comment ![image](https://hackmd.io/_uploads/Byvm2Ht2C.png) hoặc ![image](https://hackmd.io/_uploads/ByH4hrK3R.png) - dùng luận lí ![image](https://hackmd.io/_uploads/rJphhHthR.png) and trước vậy là false rồi đến or thì chắc chắn admin đúng ## level 2 dùng dấu double quote ![image](https://hackmd.io/_uploads/rkhfpHFhA.png) ## level 3 chú ý đóng dấu ngoặc ![image](https://hackmd.io/_uploads/rknUTrF3C.png) ## level 4 ![image](https://hackmd.io/_uploads/BkQrASt2C.png) cấm double quote ở username dùng backslash để vô hiệu hóa đi 1 double quote của dev ở pass thì thêm phần luận lí or để yêu cầu name admin ![image](https://hackmd.io/_uploads/HJctCSFnA.png) ## level 5 ở phần này anh dev lấy username trước sau đó dựa vào user name để truy vấn ra password và so sánh với password của người nhập tuy nhiên đấy là hash md5 vậy dù có truy vấn đến password của admin thì ta cùng không làm gì được với md5 vậy ta sẽ thao túng luôn cả password (tự đặt password cho mình luôn) ![image](https://hackmd.io/_uploads/rJ1NGJ53A.png) dùng UNION SELECT để đặt lại pass tuy nhiên phải hash sang md5 ở đây mình hash từ 'tung' vậy khi đến if đã so chính xác ## level 6 bài này truy suất database đầu tiên tìm tên mảng dùng GROUP_CONCAT() thì in ra rất nhiều nên ta lọc bằng việc sử dụng database() ![image](https://hackmd.io/_uploads/rJi-t8on0.png) ![image](https://hackmd.io/_uploads/Hy4GYIi2R.png) trả về cho ta hai bảng giờ sẽ lấy tiếp cột column ![image](https://hackmd.io/_uploads/SJjBFLo3R.png) ![image](https://hackmd.io/_uploads/BJgIYIj20.png) ở cả hai bảng đều có cột content vậy ta sẽ đọc thử content của post hoặc secret ![image](https://hackmd.io/_uploads/B1T9KUjh0.png) ![image](https://hackmd.io/_uploads/SyfsF8inC.png) đổi sang secret ![image](https://hackmd.io/_uploads/HkLJcUi2A.png) ![image](https://hackmd.io/_uploads/SyeJgqIjhA.png) ## level 7 ![image](https://hackmd.io/_uploads/B1qw2VhhR.png) có 1 câu sql ngay phần đăng nhập tuy nhiên ta thấy không có unstrusted data rơi vào -> loại ![image](https://hackmd.io/_uploads/S1yi3N3nR.png) kiểm tra cốt xuất ra , nếu tồn tại thì sẽ đi vào profile.php ![image](https://hackmd.io/_uploads/rkuXaVhhC.png) bên này thì có phần check tên người dùng , nếu chưa dăng nhập thì return về trang đăng nhập vậy để đi qua được đây mà không bị trả về thì chắc chắn ta phải đăng nhập ![image](https://hackmd.io/_uploads/BJBYTEn2R.png) ta thấy có biến username rơi vào câu sql :handbag: vậy thao túng username thôi ![image](https://hackmd.io/_uploads/ryWvUBhhC.png) ![image](https://hackmd.io/_uploads/HJZjMl33R.png) như vậy đã đọc được thônng tin về user giờ thử đọc nội dung cột password ![image](https://hackmd.io/_uploads/H17SLr2hC.png) ![image](https://hackmd.io/_uploads/Hyn7UB22R.png) ## level 8 bài này gần như bài trên tuy nhiên chú ý ![image](https://hackmd.io/_uploads/SJ2pIH23C.png) ![image](https://hackmd.io/_uploads/ryACLS2n0.png) check username chỉ có admin mới tìm được flag vậy khả năng là chỉnh lại password của admin rồi đăng nhập vào ![image](https://hackmd.io/_uploads/B1XmPH3hA.png) ở đây có phần update email vậy có thể lợi dụng để update password cho admin ![image](https://hackmd.io/_uploads/HJJ3PSh3A.png) ở đây lợi dụng update email , update có password luôn tuy nhiên chú ý phải hash md5 password lại ở đây mình hash chữ 'admin' và log bằng username admin lun ![image](https://hackmd.io/_uploads/S1rpwHn20.png) ![image](https://hackmd.io/_uploads/ByXADSn2C.png) ## Unholy Union ### Overview **SQL inject nhưng lưu ý phần commment để bypass `%` là `-- -`** ```url aa' union select null , null , null , null , (SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema = database()) -- - ``` câu query sẽ như sau ```url! SELECT * FROM inventory WHERE name LIKE '%aa' union select null , null , null , null , (SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema = database()) -- -%' ``` và ta được tên các table ![image](https://hackmd.io/_uploads/S1I5zIWmye.png) get flag thoi ```url! aa' union select null , null , null , null , (SELECT GROUP_CONCAT(flag) FROM flag) -- - ``` ![image](https://hackmd.io/_uploads/r1Y-X8ZQJx.png)