問題タブ [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.

0 投票する
1 に答える
97 参照

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() のスタックは以下の通り、スタック保護機構とは関係ないようです

0 投票する
1 に答える
324 参照

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

0 投票する
1 に答える
85 参照

python-3.x - リトル エンディアンで 16 進数をパックした後に b またはバイト オブジェクト プレフィックスを削除するにはどうすればよいですか?

struct.pack()現在、pwnlib を使用して、またはp32()pwnlib からリトル エンディアンで 16 進数をパックしています。常にバイト オブジェクトの出力が得られます。

b'\xde\xad\xbe\xef'

試してみstr.decode('utf-8')ましたが、場合によってはエラー出力があります。これをデコードする方法はありますか? 私はpython3とpwntools 4.3を使用しています

0 投票する
2 に答える
655 参照

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):

値は適切にリークされていますが、次のようにセグメンテーション違反が発生します。