buffer-overflow

    6

    1答えて

    私はFreeBSDシステムでバッファオーバーフローを実験していました。 最初の実験として、悪用されたプログラムが別のプロセス(この場合は/ bin/hostname)を起動するようにしました。すべてうまくいって、プログラムはホスト名を表示して終了しました。 その後、プログラムがシェルを起動するようにしようとしました(つまり、/ bin/shを実行しています)。私は、呼び出すプログラムを表す文字列を

    1

    2答えて

    私はバッファオーバーフローの概念を理解しており、それが私に外国の実行可能ファイルの中で私自身のコードを実行する機会を与えることを認めています。 私の質問は、これは簡単な方法で簡単に行うことができますか? DLLを挿入し、DLLMainに悪意のあるコードを書き込みますか? または、逆アセンブリを実行し、アセンブリコードを実行可能ファイルに挿入しますか? 悪意のあるコードが動作していても、あなた自身が

    12

    2答えて

    私はi386:x86_64上でlinuxを実行しています。私はCコードを書いています。また、逆アセンブルしてレジスタを読み込んで、プログラムがアセンブリでどのように動作するかを理解しています。以下は、私が書いた私のCプログラムです。 #include <unistd.h> #include <string.h> #include <stdio.h> char *string_in = "D

    0

    1答えて

    更新されたオペレーティングシステムはASLR、Canary Checksなどのスタックやヒープタイプのオーバーフローを防ぐため、メモリ破損の悪用が依然として多いのではないかと疑問に思っていましたか?システムの管理者が有能であり、ブルートフォースやlibc攻撃からシステムを保護していることを考えると、私は正直なところ、他の多くの方法を見ることはできません。誰かがシステムを攻撃すると私が想像することが

    1

    3答えて

    別の関数にはmalloc()によって割り当てられた自由()値: void foo(char ** out) { *out = malloc(computedsize); if(*out != NULL){ sprintf(*out, "%s,%s", foovar, baa); } } し、私が呼ぶ:私は呼ん int main(void) {

    6

    1答えて

    私は1つのスタックオーバーフローの例で再生しています。この例は次のようになります。 void return_input (void){ char array[30]; gets (array); printf("%s\n", array); } main() { return_input(); return 0; } すべてのコ

    2

    2答えて

    私は最近、SUN Sparcの "サーバー"を "攻撃"してバッファオーバーフローを引き起こすプログラムを作成するプロジェクトを終了しました。基本的には、実行中の "server"の内部から/ bin/kshを起動することでした。 最終的にはうまくいきましたが、愚かな理由が考えられました。ユーザーがバッファーとオフセット値を引数として入力したときに機能しませんでしたが、値がハードコードされたときに

    2

    1答えて

    バッファオーバーフローとは何かを知っていますが(DEPなし)、スタック戻りアドレスはデータセクションやコードセクションのどこかを指し示すアドレスで上書きされることがあります。スタックリターンアドレスは、実行可能コードで上書きされた別のスタックアドレスで上書きされましたか?その場合、DEPはまだ有効でしょうか? "データ実行防止"は、 "データ"セクションのみが有効に保護されているように聞こえます。

    2

    1答えて

    私はCコードファイルを与えられています。ここで正しい入力にバッファオーバーフローが発生し、ルートアクセスが許可されています。これはZShellを使ったFedoraバグです。これ(セキュリティの主題)をテストするために、私たちはLinuxカーネルで有効になっているランダムなメモリアドレス割り当てを無効にしました。 入力がバッファサイズのセグメンテーションフォルトが発生するまで、さまざまな入力をテスト

    7

    6答えて

    私はバッファを持っており、バッファが十分な容量を持っているかどうかを調べるためにテストを行いたいと考えています。バッファに追加できる要素の数を見つけます。 char *buffer = (char *)malloc(sizeof(char) * 10); 、 int numElements = sizeof(buffer); は10を返しません。私はこれを実現する方法上の任意のアイデアをや