問題
解いてみた
バッファオーバーフローの問題のようです。
まずはソースとプログラムをダウンロードします。
頑張ってwin()を呼び出してflag.txtを出力させる問題のようです。
ディレクトリを確認してみます。
objdumpしてwin()の場所を確認します。
objdump -d -M intel ./vuln
080485cbがwin()の始まりということができました。
さてこれをどこに入れればいいんでしょう。
一度実行してみます。
たくさん入力したところ0x76757473に変わりました。
これはUTF-8のvutsです。
Unicode対応 文字コード表 - ASH
順番が逆になってるのはリトルエンディアンだからだと思われます。
ここを先ほど確認したwin()のアドレス080485cbにすればよさそうです。
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
↓
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqr\xcb\x85\x04\x08
にして実行してみます。
ダメでした。
0x6263785cが何か調べてみると「bcx\」でした。
16進数ではなくてそのまま文字として読まれていたようです。。。
echoでエスケープシーケンスが使えるのでそれを使います。
具体的には以下でしょうか。
echo -e "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqr\xcb\x85\x04\x08" | ./vuln
できました。