問題タブ [ctf]
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.
php - ctf の php のコードラインの説明
私はctfを解決することを学んでいて、phpでこの行を見ました
${"result$i"} = $db->query("SELECT * FROM {$tables[$i]} " . ($order != '' ? "ORDER BY ".$db->escape_string($order)." " : ""));
これは、インクリメンタとして $i を使用した for ループ内にあります。したがって、何が起こっているのか理解できませんでした。
- これはどういう意味ですか:
${"result$i"}
$tables[$i]
{ } の中に入れる- 誰かがこのビットを説明できますか:
($order != '' ? "ORDER BY ".$db->escape_string($order)." " : "")
ubuntu - 64ビットマシン(Ubuntu 20.04)でバイナリを実行するときに別のlibc(32)を使用する
32 ビット バイナリを実行し、カスタム libc を使用しようとしています。そのため、環境変数を使用LD_PRELOAD
してパスを設定しました。
この後、単純ls
にこのエラーが表示されます-
現在、Ubuntu 20.04 64 ビット マシンでこれを試していますが、このエラーが発生します。この手法は、Ubuntu 18.04 と同じマシンで正常に機能していました。この問題が発生するのはなぜですか? また、回避策はありますか?
コンテキスト: 私は CTF チャレンジを試みていLD_PRELOAD
ますが、チャレンジがカスタムlibc
. このアプローチを使用するスクリプトを実行しようとしましたが、以前は Ubuntu 18.04 で正常に動作していましたが、同じエラーがスローされます。
編集:
コマンドls
は正常に動作しますが、エラー メッセージも出力されます。実行されたコマンドはすべて正しく機能し、このエラーも表示されます。主な問題は、これが Ubuntu 20.04 では機能しないのに、18 では完全に機能することです。
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() のスタックは以下の通り、スタック保護機構とは関係ないようです