_BoundaryGenerator |
Top Previous Next |
Tạo chuỗi Boundary ngẫu nhiên
* Tham số Không có
* Giá trị trả về Chuỗi Boundary ngẫu nhiên.
* Ghi chú
Ta thấy nó không có dòng Boundary cuối ? Thực ra là có đấy, nhưng vì Value là dữ liệu tập tin rất dài nên đã bị Live HTTP Headers xén đi mất. Vì vậy nhớ thêm Boundary cuối vào mới request thành công được.
* Ví dụ Upload một đoạn text lên https://pastebin.com/
- Ta vào trang Pastebin → Điền đại một đoạn text nào đó, ví dụ: 123123123 → Mở Live HTTP Headers (Nếu mở rồi thì bấm Clear để xoá các request cũ cho đỡ rối mắt) → Bấm Submit bên trang Pastebin để Đăng text → Và ta được như sau:
1/ Phân tích Headers
Xem mục $sAdditional_Headers để biết những Header nào cần điền, những Header nào không cần điền. Sau khi đọc xong về mục $sAdditional_Headers ta thấy không cần nạp Header nào vào $sAdditional_Headers cả.
2/ Phân tích Referer
Hình trên có Referer nhưng không điền vào tham số $sReferer cũng được, chừng nào request thất bại mới điền vào để thử.
3/ Phân tích Cookie cần gửi đi
→ Tạm thời không cần nạp PHPSESSID vào $sCookie, khi nào request thất bại thì thử lại. ( → Sau khi request thử thì thấy không cần nạp. )
4/ Phân tích Data cần gửi đi
- Các Boundary để phân cách giữa các Key-Value, ta tạo ra chúng bằng hàm: $sBoundary = _BoundaryGenerator()
- Cấu trúc DataToSend mà ta thấy được trên Live HTTP Headers:
(xuống dòng)
(2 lần xuống dòng - mũi tên màu xanh dương trong hình)
................. Và lặp lại như vậy đến Boundary cuối (lưu ý Boundary cuối có thêm 2 dấu -- ở cuối, xem hình chỗ khoanh màu đỏ).
+ Hãy để ý chỗ khoanh màu hồng, nó có tên csrf_token_post, Token này là chuỗi do Host tạo ra và không cái nào giống cái nào nên ta phải đi tìm nó. Cách tìm xem tại đây.
+ Content-Disposition: form-data; name= lặp lại nhiều lần nên ta gán biến cho gọn: $CDFAN = 'Content-Disposition: form-data; name='
+ 2 lần xuống dòng ta gán biến cho gọn: $xd = @CRLF & @CRLF
+ Vậy ta bắt đầu gán giá trị cho $sDataToSend (làm từ từ cho chuẩn nhé, quan sát Live HTTP Headers bắt đầu từ chỗ dưới Content-Length - chỗ thụt vào)
5/ Hoàn thiện code
|