_BoundaryGenerator

HTTP Requests

_BoundaryGenerator

Top  Previous  Next

 

Tạo chuỗi Boundary ngẫu nhiên

 

_BoundaryGenerator()

 

 

 

* Tham số

Không có

 

 

 

* Giá trị trả về

Chuỗi Boundary ngẫu nhiên.

 

 

 

* Ghi chú

 

·Chuỗi boundary là chuỗi phân cách các giá trị Key và Value của Data To Send.

 

formdata3

 

·Lưu ý quan trọng là dòng Boundaray cuối cùng phải có thêm 2 dấu -- ở cuối (xem hình trên).

 

·Lưu ý quan trọng thứ 2 là hãy xem hình mẫu dưới đây:

 

formdata1

 

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:

 

formdata4

 

 

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

 

·Những cookie tạp nham thường có dạng __abcxyz, ___abcxyz ta không cần để ý đến chúng.
·Riêng Cookie PHPSESSID có thể có trang có nó mới request thành công, có trang không cần.

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:

ØBoundary

(xuống dòng)

ØContent-Disposition: form-data; name="Key"

(2 lần xuống dòng - mũi tên màu xanh dương trong hình)

ØValue
ØBoundary

.................        

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)

 

$sDataToSend   = $sBoundary & @CRLF

$sDataToSend &= $CDFAN & '"csrf_token_post"' & $xd & $Token & @CRLF

$sDataToSend &= $sBoundary & @CRLF

$sDataToSend &= $CDFAN & '"submit_hidden"' & $xd & 'submit_hidden' & @CRLF

$sDataToSend &= $sBoundary & @CRLF

$sDataToSend &= $CDFAN & '"paste_code"' & $xd & 'Nội dung mà ta đã gửi' & @CRLF

$sDataToSend &= $sBoundary & @CRLF

$sDataToSend &= $CDFAN & '"paste_format"' & $xd & '1' & @CRLF

$sDataToSend &= $sBoundary & @CRLF

$sDataToSend &= $CDFAN & '"paste_expire_date"' & $xd & 'N' & @CRLF

$sDataToSend &= $sBoundary & @CRLF

$sDataToSend &= $CDFAN & '"paste_private"' & $xd & '0' & @CRLF

$sDataToSend &= $sBoundary & @CRLF

$sDataToSend &= $CDFAN & '"paste_name"' & $xd & 'Tên đã đặt' & @CRLF ;gán biến cho tiện khi code

$sDataToSend &= $sBoundary & '--' ; Luôn nhớ Boundary kết thúc với '--'​

 

 

5/ Hoàn thiện code

 

#include <_HttpRequest.au3>

$NoiDung = 'upload chuẩn chưa'

$rq1 = _HttpRequest(2, 'https://pastebin.com/')

$csrf_token_post = StringRegExp($rq1, '"csrf_token_post" value="(.*?)"', 1)[0]                        

;-----------------------------------------------------------------------------

$sDataToSend = .... (gộp với $sDataToSend đã code ở trên)

$rq2 = _HttpRequest(2, 'https://pastebin.com/post.php', $sDataToSend)

_HttpRequest_Test($rq2)

MsgBox(4096, 'Địa chỉ Paste', _GetLocationRedirect() )