問題タブ [buffer-overflow]
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 - Confused by gdb print ptr vs print "%s"
Why is ptr printing the string correctly but cwd not; this also affects the program and it crashes if I try to use the cwd...
[edit: turns out that crash was caused by a stupid buffer overflow on this var... grr...not gdb, but the print question was still valid]
c - 異なる UNIX ライクなオペレーティング システムでの snprintf の一貫性のない動作をどのように克服できますか?
man ページによると、snprintf は glibc バージョン 2.2 以降で書き込まれたバイト数を返しています。ただし、libc2.2 および HP-UX の下位バージョンでは、正の整数が返されるため、バッファ オーバーフローが発生する可能性があります。
どうすればこれを克服し、移植可能なコードを書けるでしょうか?
編集:より明確にするために
このコードはlib 2.3で完全に機能しています
Linux では文字列の長さ (10) を返します。しかし、同じコードが、HP-UX マシンで出力される文字数よりも大きい正の数を返しています。この説明でいいと思います。
c# - 完全に管理されたasp.net C#Webアプリケーションでバッファオーバーフロー/オーバーランが可能ですか
完全に管理された asp.net Web ポータルにバッファ オーバーフロー/オーバーランの脆弱性がありますか? はいの場合、どのようにテストできますか?
c++ - どのC/C ++関数が最も頻繁に誤って使用され、バッファオーバーフローを引き起こす可能性がありますか?
メモリリークでいっぱいの大規模なC++コードベースを維持するように依頼されました。調べてみると、リークにつながるバッファオーバーフローがたくさんあることがわかりました(どうしてこれが悪くなったのか、知りたくありません)。
危険な機能から始めて、最初にバッファオーバーフローを削除することにしました。最も頻繁に誤って使用され、バッファオーバーフローを引き起こす可能性のあるC / C ++関数はどれですか?
バッファオーバーランの検索に使用されるコンパイラやツールについて、これを扱う別の質問を作成しました
c++ - どのC/C ++ツールがバッファオーバーフローをチェックできますか?
メモリリークでいっぱいの大規模なC++コードベースを維持するように依頼されました。調べてみると、リークにつながるバッファオーバーフローがたくさんあることがわかりました(どうしてこれが悪くなったのか、知りたくありません)。
最初にバッファオーバーフローを削除することにしました。バグハンティングを簡単にするために、バッファオーバーランをチェックするためにどのツールを使用できますか?
c - カスタム get 行入力関数
私は K&R の本を読んでいて、少し立ち往生しています。
次の何が間違っていますか?
プログラムを実行すると、ループから抜け出せず、Ctrl+C終了する必要があります。ただし、5 行目を に置き換えるとprintf("%c", c);
、Enter キーを押して新しい行を作成した後、すべての入力が正常に出力されます。
c - C でのスタック オーバーフローの悪用
質問は、実際には C のスタック オーバーフローに関するものです。私は一生やり遂げることができない割り当てを持っています。gdb のすべてを見てきましたが、それを理解することはできません。
質問は次のとおりです。
わかりましたので、最初の質問を正しく取得することができました。これは、メイン パスで明示的に呼び出されていない 2 つの関数のいずれかを任意に呼び出すことです。ちなみに、これはプログラムを変更せずに実行中に行う必要があります。N
に設定してプログラムを実行することでこれを行いました。これにより7
、フレームの関数ポインターが表示され、混乱したまたはのメモリアドレスでvictim_func
書き込み、動作します。(私は 64 ビット マシンを使用しています。そのため、EBI ポインターの幅が 1 ではなく 2 int であるため、7 にする必要があります)a[7]
shell_call
私の質問は次のとおりです。関数に渡される引数をどのように制御できshell_code
ますか? すなわち。string
に を書くにはどうすればよいですかchar* c
。全体のポイントは、プログラムのみを実行して、psなどの unix コマンドを実行することです。
EBI ポインタをpsの 16 進表現で記述し、引数リストをshell_call
それに設定することを考えましたが、うまくいきませんでした。argsv
また、引数を入力して、の引数リストをメインに設定しようとshell_call
しましたarg_list
が、どちらも機能しませんでした。
2番目のバージョンは機能するはずですが、新しいスタックフレームの引数リストを正しく設定していないと思います(関数ポインターの最初の部分であるため、 に書き込み、 and を書き込むことでそれをa[8]
行いましたが、おそらくこれらは のパラメータであるため正しくありません。では、 のパラメータにアクセスするにはどうすればよいですか?0
a[9]=736c
a[10]=0000
victim_func
shell_call
security - コンピュータを悪用するためにバッファ オーバーフローはどのように使用されますか?
コンピュータを悪用するために バッファ オーバーフローはどのように使用されますか?
スタックやヒープのオーバーフローを引き起こすだけで、どうやって任意のコードを実行できるのでしょうか?
プログラム メモリの一部が上書きされてはならないことは理解していますが、これがどのようにして独自のコードを実行することにつながるのかわかりません。また、サードパーティの悪意のあるコードは、ターゲット プロセッサのアセンブリ言語で記述されている必要がありますか?
java - Javaにはバッファオーバーフローがありますか?
Javaにはバッファオーバーフローがありますか? はいの場合、シナリオを教えていただけますか?
c - Secure C と大学 - バッファ オーバーフローのトレーニング
私は最近、C の大学のコースを修了しました。したがって、もちろん経験が不足しています。
一部の大学は、学生に安全なプログラミング、または少なくともいくつかの要素を教える傾向があります。動画もあります(こちらからどうぞ)。
Cで文字列をコピーするには、私が知る限り、strcpyまたはstring.h関数が必要です。日常のプログラミングでどのように安全に使用しますか? バッファオーバーフローを防ぐために割り当てを処理する関数はありますか? Cの CERT セキュア コーディング標準があります。例と準拠ソリューションを提供しています。
そして、それらの代替手段は次のとおりです。
here から取得、2番目の例。
しかし、私が知る限り、それはより挑戦的で、より多くのコードとより多くの作業です。なぜ誰もライブラリ自体を変更しないのですか? または、少なくとも、これを適切な方法で処理する安全な代替ライブラリまたは関数を誰も提供しないのはなぜですか?
読んでくれてありがとう、ウィシ