astakna

DeadFace CTF - Epicsales

Oct 28th, 2025 (edited)
367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.05 KB | Source Code | 0 0
  1. set -euo pipefail
  2.  
  3. HOST="env01.deadface.io"
  4. PORT=3306
  5. USER="epicsales"
  6. PASS="Slighted3-Charting-Valium"
  7. DB="epicsales_db"
  8.  
  9. MYSQL_OPTS=(
  10.   --host="$HOST"
  11.   --port="$PORT"
  12.   -u"$USER"
  13.   -p"$PASS"
  14.   --ssl=0
  15.   --batch
  16.   --skip-column-names
  17.   --default-character-set=utf8mb4
  18.   -D "$DB"
  19. )
  20.  
  21. run_sql() {
  22.   mysql "${MYSQL_OPTS[@]}" -e "$1"
  23. }
  24.  
  25. run_sql "SELECT 1;" >/dev/null
  26.  
  27. echo "Connecting to EpicSales database to fetch flags..."
  28.  
  29. SIGNUPS_COUNT="$(run_sql "
  30.   SELECT COUNT(*)
  31.   FROM customers
  32.   WHERE join_date >= '2025-09-01';
  33. ")"
  34. echo "Signups Flag: deadface{${SIGNUPS_COUNT}}"
  35.  
  36. TOP_PRODUCT_NAME="$(run_sql "
  37.   SELECT p.product_name
  38.   FROM products p
  39.   JOIN reviews r ON p.product_id = r.product_id
  40.   GROUP BY p.product_id, p.product_name
  41.   ORDER BY AVG(r.rating) DESC, COUNT(*) DESC, p.product_id ASC
  42.   LIMIT 1;
  43. ")"
  44. echo "Top Product Flag: deadface{${TOP_PRODUCT_NAME}}"
  45.  
  46. LOW_STOCK_ROW="$(run_sql "
  47.   SELECT p.product_name, f.facility_num
  48.   FROM inventories i
  49.   JOIN products p   ON p.product_id = i.product_id
  50.   JOIN facilities f ON f.facility_id = i.facility_id
  51.   GROUP BY i.product_id, i.facility_id
  52.   HAVING SUM(i.quantity) < 5
  53.   ORDER BY SUM(i.quantity) ASC, p.product_name ASC, f.facility_num ASC
  54.   LIMIT 1;
  55. ")"
  56. LOW_STOCK_PRODUCT="$(printf "%s" "$LOW_STOCK_ROW" | awk -F'\t' '{print $1}')"
  57. LOW_STOCK_FACILITY_NUM="$(printf "%s" "$LOW_STOCK_ROW" | awk -F'\t' '{print $2}')"
  58. echo "Low Stock Product Flag: deadface{${LOW_STOCK_PRODUCT} ${LOW_STOCK_FACILITY_NUM}}"
  59.  
  60. CSUITE_SUM_RAW="$(run_sql "
  61.   SELECT ROUND(SUM(pay_rate), 2)
  62.   FROM employees
  63.   WHERE role IN ('CEO','CTO','CFO');
  64. ")"
  65. printf -v CSUITE_SUM_FMT "%.2f" "${CSUITE_SUM_RAW:-0}"
  66. echo "C-Suite Payroll Flag: deadface{\$${CSUITE_SUM_FMT}}"
  67.  
  68. HIGH_ENGAGEMENT_EMAIL="$(run_sql "
  69.   SELECT c.email
  70.   FROM customers c
  71.   JOIN orders o ON o.customer_id = c.customer_id
  72.   LEFT JOIN reviews r ON r.customer_id = c.customer_id
  73.   WHERE r.review_id IS NULL
  74.   GROUP BY c.customer_id, c.email
  75.   ORDER BY COUNT(DISTINCT o.order_id) DESC, c.customer_id ASC
  76.   LIMIT 1;
  77. ")"
  78. echo "High Engagement Customer Flag: deadface{${HIGH_ENGAGEMENT_EMAIL}}"
  79.  
  80. TOP_SPENDER_ROW="$(run_sql "
  81.   SELECT c.first_name, c.last_name
  82.   FROM customers c
  83.   JOIN orders o      ON o.customer_id = c.customer_id
  84.   JOIN order_items oi ON oi.order_id = o.order_id
  85.   JOIN products p    ON p.product_id = oi.product_id
  86.   GROUP BY c.customer_id, c.first_name, c.last_name
  87.   ORDER BY SUM(oi.quantity * p.price) DESC, c.customer_id ASC
  88.   LIMIT 1;
  89. ")"
  90. TOP_SPENDER_FIRST="$(printf "%s" "$TOP_SPENDER_ROW" | awk -F'\t' '{print $1}')"
  91. TOP_SPENDER_LAST="$(printf "%s" "$TOP_SPENDER_ROW" | awk -F'\t' '{print $2}')"
  92. echo "Top Spending Customer Flag: deadface{${TOP_SPENDER_FIRST} ${TOP_SPENDER_LAST}}"
  93.  
  94.  
  95. HAS_EA_TABLE="$(run_sql "
  96.   SELECT COUNT(*)
  97.   FROM information_schema.tables
  98.   WHERE table_schema = DATABASE()
  99.     AND table_name = 'employee_assignments';
  100. ")"
  101.  
  102. if [[ "$HAS_EA_TABLE" != "1" ]]; then
  103.   echo "ERROR: Required table 'employee_assignments' not found in database '$DB'." >&2
  104.   echo "Cannot compute 'Undervalued' flag without employee_assignments." >&2
  105.   UNDERVALUE_FLAG=""
  106. else
  107.   FACILITY_ROW="$(run_sql "
  108.     SELECT i.facility_id, AVG(i.quantity) AS avg_qty
  109.     FROM inventories i
  110.     GROUP BY i.facility_id
  111.     ORDER BY avg_qty ASC, i.facility_id ASC
  112.     LIMIT 1;
  113.   ")"
  114.   FACILITY_ID="$(printf "%s" "$FACILITY_ROW" | awk -F'\t' '{print $1}')"
  115.   AVG_QTY_RAW="$(printf "%s" "$FACILITY_ROW" | awk -F'\t' '{print $2}')"
  116.   printf -v AVG_QTY_FMT \"%.4f\" "${AVG_QTY_RAW:-0}"
  117.  
  118.   ITM_EMAIL="$(run_sql "
  119.     SELECT e.email
  120.     FROM employee_assignments ea
  121.     JOIN employees e ON e.employee_id = ea.employee_id
  122.     WHERE ea.facility_id = ${FACILITY_ID}
  123.       AND e.role LIKE '%IT Manager%'
  124.     ORDER BY e.start_date DESC, e.employee_id ASC
  125.     LIMIT 1;
  126.   ")"
  127.  
  128.   if [[ -n "$ITM_EMAIL" ]]; then
  129.     UNDERVALUE_FLAG="deadface{${ITM_EMAIL} ${AVG_QTY_FMT}}"
  130.   else
  131.     UNDERVALUE_FLAG=""
  132.   fi
  133. fi
  134.  
  135. echo "IT Manager at Lowest-Average Facility Flag: ${UNDERVALUE_FLAG}"
  136.  
  137. echo "All flags fetched successfully."
Advertisement
Add Comment
Please, Sign In to add comment