問題タブ [stack-smash]
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.
c - バッファオーバーフロー-通常のユーザーのSegFaults
以下は私のコードで、脆弱なプログラム(stack.c)とエクスプロイト(exploit.c)の両方です。このコードは、教授がWindowsユーザーに送信したパッケージ済みのUbuntu 9で機能します(友人に彼のコンピューターでテストしてもらいました)が、iMacで実行しているUbuntu 12では、これを実行しようとするとsegfaultsが発生します通常のユーザーで。
ここにスタックがあります:
と悪用:
これらをUbuntu12内でコンパイルするために、私は以下を使用しました。
繰り返しになりますが、通常のユーザーではなく、rootユーザーで機能します。
とにかく、これは深夜に予定されており、私はこの制限で残りの割り当てをやり遂げましたが、誰かが提案を持っている場合は、むしろ適切に完了したいと思います。タオルを投げる前に専門家を呼ぶと思った。このコードが通常のユーザーでは機能しないのに(古いバージョンのubuntuでは機能するはずです)、rootユーザーでは機能する理由を調べています。通常のユーザーでもこれを機能させるには、何を変更する必要がありますか。
c - ICMP パケットの送信中にスタック破壊が検出されました
パケットC
を送信するプログラムを作成しました。ICMP
ここに対応するコードがあります..
コードの問題は、実行すると icmp パケットが正常に送信され、wire shark
. しかし、最後に表示した後sent successfully
、次のエラーが表示されます..
何が欠けているのか教えてください..ありがとう。
c - int を 16 進形式の文字列に変換します
http://www.cs.wright.edu/people/faculty/tkprasad/courses/cs781/alephOne.htmlの記事のようにスマッシュ スタッキング エクスプロイトを実行しようとしているときに、次のようにする必要があるという問題に遭遇しました。スタック ポインタを文字列に変換します。
(printf を使用して) int を 16 進形式で出力する方法は知っていますが、内部文字列表現として格納する方法は知りません。memcpy 関数に渡すことができるように、文字列として内部的に保存する必要があります。
私が必要とする理論上の関数は、以下の「convertFromIntToHexCharStar」です。
この関数を引数として使用することを意図しています。スタックポインタを提供します。
スタック ポインターを 16 進数の char* に変換したいので、次のように memcpy を実行できます。
過去に機能したことがわかっているため、16 進数で表されたアドレスをメモリに入力する必要があります。
したがって、私が求めているのは、それを文字列に変換するか、この NOP スレッドを実行する別の簡単な方法 (これが私が解決しようとしている私の本当の問題です) のいずれかです。アドレスを複数回入力するつもりだったので、スタック上の戻りアドレスを上書きする可能性が高くなりますが、簡潔にするために、「アドレス」を「バッファー」に書き込むコードは 1 行だけにしました。
私はすでにstackoverflowとgoogleを検索しましたが、何も見つかりませんでした。よろしくお願いします。
c++ - スタックを破壊する
だから私はセキュリティクラスの割り当てに取り組んでおり、割り当てはスタックオーバーフローを使用して、プログラムで使用されたことのない関数 oopsDidISmashTheStack を呼び出すことです。
buf 変数が sfp であるという概念を理解しており、次に戻りアドレスを理解できないのは、戻り値を関数が配置されているアドレス 0x080484fc に変更する入力です。バッファを埋めるには12文字が必要だと思ったのですが、sfpが4バイトを返すという印象を受けていたので、sfpを別の4つのランダムな文字で埋めてから、\ xfc \ x84 \ x04 \ x08を使用して作成しようとしました関数への戻りアドレスポイント。
誰かがスタックメモリの仕組みに精通していて、どこが間違っているのかを説明できれば、それは素晴らしいことですか?