問題タブ [pwntools]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - buf のアドレスが 10 ではなく 0x12 になっているのはなぜですか?
私のコードは次のとおりです。
コードをコンパイルし、ida pro を使用してバイナリ ファイルを開きました (gcc バージョンは 5.4.0、OS は ubuntu 16.04、コンパイル コマンドは「gcc -m32 -no-pie -fno-stack-protector stack_overflow.c - o stack_overflow ")、逆アセンブルされたコードは、バッファ s のアドレスが ebp - 12h であることを示していることがわかりました。どうして ebp - 10 ではないのでしょうか?
myread() の逆アセンブル コードは次のとおりです。
myread() のスタックは以下の通り、スタック保護機構とは関係ないようです
c - cat を使用して対話型シェルを開くのはなぜですか?
(ダウンロードリンクなしで再度尋ねる)
問題の説明
Nana は、バッファ オーバーフローが最も一般的なソフトウェアの脆弱性の 1 つであると教えてくれました。本当?
bof.c
両方
解決
https://0xrick.github.io/pwn/bof/
バッファをオーバーフローさせるには、52 個のトラッシュ キャラクターと cafebabe を提供する必要があることを理解しています。しかし、それを入力として渡すだけでは、インタラクティブなシェルは得られません。cat コマンドも渡したときだけです。なぜ猫が必要なの??
- -編集 - -
これがサーバー上で実行されていることを忘れていたので、nc pwnable.kr 9000
. として入力を渡しますpython -c 'print("A"*52 + "\xbe\xba\xfe\xca")' | nc pwnable.kr 9000
。正解は(python -c 'print("A"*52 + "\xbe\xba\xfe\xca")'; cat) | nc pwnable.kr 9000
python-3.x - リトル エンディアンで 16 進数をパックした後に b またはバイト オブジェクト プレフィックスを削除するにはどうすればよいですか?
struct.pack()
現在、pwnlib を使用して、またはp32()
pwnlib からリトル エンディアンで 16 進数をパックしています。常にバイト オブジェクトの出力が得られます。
b'\xde\xad\xbe\xef'
試してみstr.decode('utf-8')
ましたが、場合によってはエラー出力があります。これをデコードする方法はありますか? 私はpython3とpwntools 4.3を使用しています
c - バッファ オーバーフローで SIGSEV を取得する
すべての保護を有効にして、単純な x64 C バイナリでバッファ オーバーフローを作成しようとしています (つまり、ASLR、カナリア、PIE、NX、完全な RelRO - 無効な Fortify)。(更新された)x64 Kali Linux 2020.3ディストリビューションを使用しています(公式の攻撃的なセキュリティWebサイトのvmwareイメージを使用するvmwareで)。root としてプログラムをコンパイルし、権限のないアカウントから root 権限でプログラムにアクセスできるように SUID ビットを有効にしています。脆弱なプログラム ( example5.c
) のコードは次のとおりです。
プログラムをコンパイルするには、次を使用していますMakefile
。
そこで、ターミナルを開いて次のように入力します。
次に、pwntools を使用して Python 3.8.6 で作成したエクスプロイトを使用して、カナリアと libc のベースアドレスをリークし ( libc-2.31.so
)、return-to-libc 攻撃を実行します (2 つのガジェットを使用)。エクスプロイトは次のとおりです ( exploit5.py
):
値は適切にリークされていますが、次のようにセグメンテーション違反が発生します。