Programming 11

From Kyle's Wiki
Jump to: navigation, search

The hardest part about this mission is not simply calculating the string, but doing it in 3 seconds.

#!/bin/bash
USER=""
PASS=""
if [ -z "$PASS" ]; then echo "You need to set your username and password in the script."; exit 1; fi
wget -q -O .login.html http://www.hackthissite.org/user/login --post-data="username=$USER&password=$PASS&btn_submit=Login" --save-cookies=.cookies.txt --keep-session-cookies --referer http://www.hackthissite.org/
grep "Image Validation" .login.html >/dev/null && echo "Error: You need to log out/in in a web browser" && exit 1
wget -q -O -  http://www.hackthissite.org/missions/prog/11/  --load-cookies=.cookies.txt --keep-session-cookies --referer http://www.hackthissite.org/missions/programming/ > out.txt

TEXT=`cat out.txt | grep "Generated String:" | cut -f 2 -d : | cut -f 1 -d "<" | tr -d [:blank:]`
SHIFT=`cat out.txt | grep "Generated String:" | cut -f 3 -d : | cut -f 1 -d "<" | tr -d [:blank:]`

echo "If this doesn't work, you'll need to add this separator:"
echo $TEXT

for EACH in `echo $TEXT | tr "," "\n" | tr ")" "\n" | tr "#" "\n"| tr "'" "\n"| tr "." "\n"| tr "&" "\n"| tr "(" "\n"| tr "!" "\n"| tr "%" "\n"| tr "$" "\n"| tr "+" "\n"| tr "-" "\n"| tr "/" "\n"| tr "*" "\n"| tr "@" "\n"| tr "^" "\n"| tr "\"" "\n"`
do 
let EACH=$EACH-$SHIFT
STRING="$STRING$(printf "\\$(printf "%03o" $EACH)")"
done
echo The string is $STRING
wget -q -O -  http://www.hackthissite.org/missions/prog/11/index.php --post-data="solution=$STRING"  --load-cookies=.cookies.txt --keep-session-cookies --referer http://www.hackthissite.org/missions/prog/11/ > out2.txt
grep "answer is wrong" out2.txt | html2text
grep -i successfully out2.txt | html2text
grep -i "already completed" out2.txt | html2text

rm .login.html; rm .cookies.txt; rm out.txt; rm out2.txt
Personal tools
Namespaces

Variants
Actions
Efforts
Toolbox
Meta