FTZ Level 14
hintは以下の通りです.
今回受信したのは、実行因子ではなくfgetsです.
Level 9と同様に、bufよりも長さ制限が25バイト大きいため、バッファオーバーフローが発生する可能性があります.
レベル14のshellを提供するには、レベル13に類似したcheck変数があります.この変数の値は0 xdeadboilでなければなりません.
また、無駄なcrapという変数があり、偽象のようです.
setreoid呼び出しとともにシステム関数として/bin/shを実行するためshellコードを使用する必要はありません.
プログラムを再コンパイルし、gdbに分解します.
スタックに0 x 38(56バイト)の空間を割り当てる.
でfgets関数を呼び出し、前の行のパラメータを表示します.
ソースコードではbuf,45,stdinの順にパラメータが渡され,スタックでは逆であるため,の0 x 2 d(十進法45)を基準として,の[ebp-56]がbufの位置であることがわかる.
のcmpでは、[ebp-16]を0 xdeadbookと比較するので、[ebp-16]がcheckの位置であることも分かる.
したがって、スタックの構造は次のとおりです.
checkとcrapのサイズを合わせると8バイト残っているため、ソースコードのcheckはcrapの後の宣言を参照し、[ebp-16]、crapとdummyはcheckの上に描かれている.
この問題の目的はcheckの改ざんであるため,checkの上にあるcrapやdummyは解答に関係なく40バイトの無意味な文字で埋め込み,残りの4バイトは0 xdeadbookで埋め込むだけでよい.
攻撃命令は以下の通り.
何も見えませんが、idを入力すると、Level 15が得られたShellが見えます.
今回受信したのは、実行因子ではなくfgetsです.
Level 9と同様に、bufよりも長さ制限が25バイト大きいため、バッファオーバーフローが発生する可能性があります.
レベル14のshellを提供するには、レベル13に類似したcheck変数があります.この変数の値は0 xdeadboilでなければなりません.
また、無駄なcrapという変数があり、偽象のようです.
setreoid呼び出しとともにシステム関数として/bin/shを実行するためshellコードを使用する必要はありません.
プログラムを再コンパイルし、gdbに分解します.
ソースコードではbuf,45,stdinの順にパラメータが渡され,スタックでは逆であるため,
したがって、スタックの構造は次のとおりです.
checkとcrapのサイズを合わせると8バイト残っているため、ソースコードのcheckはcrapの後の宣言を参照し、[ebp-16]、crapとdummyはcheckの上に描かれている.
この問題の目的はcheckの改ざんであるため,checkの上にあるcrapやdummyは解答に関係なく40バイトの無意味な文字で埋め込み,残りの4バイトは0 xdeadbookで埋め込むだけでよい.
攻撃命令は以下の通り.
(python -c 'print "A"*40+"\xef\xbe\xad\xde"'; cat) | ./attackme
何も見えませんが、idを入力すると、Level 15が得られたShellが見えます.
Reference
この問題について(FTZ Level 14), 我々は、より多くの情報をここで見つけました https://velog.io/@bin3635/FTZ-Level-14テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol