Web問題の攻撃手法
pwnでの攻撃手法
format string attack
printf関数のフォーマット文字列が指定されていない場合に、外部から指定するような文字列を挿入することでスタックなどのメモリ内容を読み出す攻撃手法。
printf関数は呼ばれる際に、フォーマット文字列をスタックに積む。しかしprintf関数にフォーマット文字列が指定されていないとき、その部分を任意の文字列で置き換えられてしまうため、%p, %x などのフォーマット文字列を挿入することでメモリ内容を読み取ることができる。
・フォーマット文字列
「%p」や「%x」が使われる
・参考
その他
・コインやお金を増やそう系のゲームが与えられたとき
とりあえず、負の数を指定してみる
【CTFlearn】Simple bof
与えられたC言語ファイルを見ると
secret に 0x67616c66 が入ればフラグが表示されそうです。
0x67616c66 は16進数で「flag」なので
secret に「flag」が入るような入力をすることでフラグが得られます。
CTFlearn{buffer_0verflows_4re_c00l!}
CTFlearn - Tone dialing
DTMF暗号を使った問題
↓を使ってデコードできる
http://dialabc.com/sound/detect/index.html
デコードすると以下のようになる
67 84 70 108 101 97 110 123 67 82 89 80 84 79 71 82 65 80 72 89 125
ASCIIコードで変換して
CTFlean{CRYPTOGRAPHY}
git直前のaddに戻す
ローカルの変更取り消し
$ git checkout .
変更はこれで全部ないことにしてくれるが、
新規追加したファイルに関しては削除されないので
完全に元に戻したいのなら別途削除する必要がある
$ git clean -df .