する質問をすることでしか得られない、回答やアドバイスがある。攻撃を実験してみようと思い、SSPとASLRを無効にして、バッファオーバーフローによりリターンアドレスをsystem()へのアドレスに書き換え、引数を/bin/shにしようとしました。system()アドレスが0x0000......だったため引数を指定できませんでした。実行環境のメモリアドレスは8バイトあるため、全てが0x0000......で表されています。このような場合に、上手くsystem(/bin/sh)を実行する方法を教えて下さい。\x--\x.......\x00\x00となってしまうため、strcpyが文字列として認識するのが入力値のsystem関数のアドレスの6バイト目までとなってしまい、system関数の引数部分を書き換えられない、という意味です。うまく伝わればいいのですが・・・また、この実験はCTFに参加してみたく行ったものなので、悪意ある攻撃のためではありません。この実験で使用したコードは以下の通りです。64bitで実行しました。attachmentクリップ2気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。件sort評価が高い順sort新着順sort古い順linkcheckベストアンサー+4しかし、system()アドレスが0x0000......だったため引数を指定できませんでした。関連して、戻り先アドレスとして値に0を埋めたいと言うことであれば、perlの文字列でC言語のように16進数指定や\0指定もできるので、それを利用すれば所望の結果を得られると思います。300000010純粋に技術的な興味からくる実験だとは思いますが、最終的には攻撃手法の解説やヘルプになってしまう恐れはありますので、回答としてはこの辺にしておきます。そもそも回答として外していたらごめんなさい。...での実行結果をコマンドライン文字列としてmainで受け取っていて、その生成されたコマンドラインオプションの文字列が途中で'\0'を含んでしまっているので、strcpyで途中までしか取り込めない、と言うことでしたか。実験の主旨からするとコマンドラインから指定するのが必須要件ではないはずです。perlのスクリプトを使っているのは「便利だから」程度の理由だと思いますが、プログラム中で定数で指定してしまっても実験はできるはずですし、あくまで「外部から入力したい」と言うことであればパラメータを渡す方法はいくらでも考えられます。※どのような方法があるかは課題としてご自分で考えてみてください。この実験はCTFに参加してみたく行ったものなので、悪意ある攻撃のためではありません。個人的には低レイヤーでかつ、セキュリティ系に興味を覚える方は少なく、(良い意味での)貴重な将来の人材と成り得るとは思っているので、若干の警戒はあるものの全面的に疑っている訳ではありません。別回答にもありましたが、どんな内容が悪用されるか分かりません。初心者レベルの攻撃でも、例えば子供でも刃物を持ってうろついていたら保護されるように、初心者レベルのプログラムでも意図した攻撃や誤用で罪になることも考えられます。今に始まったことではありませんが、teratailをはじめ、公共の目にとまりやすいWEBサイトでそのような情報を共有すること自体がリスクになっているので、慎重にならざるを得ません。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。commentコメント投稿link+4NXも無効であれば、ret2libcではなくargv[1]に入っているshellcodeの移動した方が簡単気がします。execve(/bin/sh)のshellcodeを書き込んで、RETをそのアドレスに書き換えてみればいかがでしょうか?こういう感じで、nop-sledのサイズとoffsetを自分で調整してみてください。shellcodeを書くしかないです。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。20:45回答ありがとうございます!とても参考になります。22:05英語なんですが、この攻撃を最初に解説した記事を読むのがお勧めです。http://phrack.org/issues/49/14.html英語なんですが、この攻撃を最初に解説した記事を読むのがお勧めです。21:28ありがとうございます。ありがとうございます。文字列は配列の一種です。配列というのは、メモリ上の連続した範囲に同じ型のデータがならんでいるもののことです。配列を文字列として扱う際には特別な約束ごとがあります。「\0があったらそこで終了とみなす」というものです。strcpyなどのstr...系のC標準ライブラリ関数は、配列をそのようなものとして扱います。今回の場合、メモリ上の特定の範囲を配列として扱いたいだけで、文字列を扱いたいわけではないですから、str...系の関数は使えません。配列として扱うmem...系の関数があります。memcpyなどですね。システムに設計時の意図と異なる動作をさせる手法について調査や実験をすることは問題ありません。それを応用して他人の権利を侵害したり財物を窃取したりすれば犯罪ですが、そうでなければ学習・研究の一環です。(もちろん、他人が現に運用しているシステムで実験してはいけません)。「攻撃」といった言葉に過剰反応して本来できたはずの回答を控えたり、質問したこと自体を非難するのはやめたほうがいいです。アルコール発酵の仕組みについてどこかの質問サイトで質問した人に「酒税法にひっかかるぞ」と言っているようなもので、的外れです。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。commentコメント投稿link+1また、この実験はCTFに参加してみたく行ったものなので、悪意ある攻撃のためではありません。評価が高い回答ほどページの上位に表示されます。remove低評価3回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。06:33全く実用的でなく、初歩的な内容なので理解されると思ったんですが。実用的でなく、初歩的な内容なので理解されると思ったんですが。06:35初歩的な内容だと思うならご自分で解決しましょう。他人を巻き込んではいけません初歩的な内容だと思うならご自分で解決しましょう。06:47実用といった視点から見ると環境的にも初歩的なのであって初心者の自分が悩んでるから質問したんです。ここは質問サイトですよね?実用といった視点から見ると環境的にも初歩的なのであって初心者の自分が悩んでるから質問したんです。06:54犯罪につながるような質門はこういう公共の場ではするものではありません。覚えておきますよう犯罪につながるような質門はこういう公共の場ではするものではありません。編集ASLRさえない環境でのとても単純な攻撃を犯罪に使えるかもしれないと捉えることが前提なんですね。ASLRさえない環境でのとても単純な攻撃を犯罪に使えるかもしれないと捉えることが前提なんですね。この実験はCTFに参加してみたく行ったものなので、悪意ある攻撃のためではありません。あなた自身、自覚していることですが。この実験はCTFに参加してみたく行ったものなので、悪意ある攻撃のためではありません。あなた自身、自覚していることですが。編集1人目の回答者さんに答えたつもりだったんですが...しかし1人目の方も気にされているので、そう捉える人がいるのを考えると確かにここでするべき質問ではなかったですね。自分で解決してみます。1人目の方も気にされているので、そう捉える人がいるのを考えると確かにここでするべき質問ではなかったですね。自分で解決してみます。20:01somuさん、ご遠慮なく聞いていてください。日本のセキュリティ人材の不足が世界に比べるともっとも激しくて、あなたのような好奇心を持った研究者が減るとサイバーセキュリティ大臣みたいなパソコンすら利用していないお爺ちゃんしか残らないのですから。somuさん、ご遠慮なく聞いていてください。日本のセキュリティ人材の不足が世界に比べるともっとも激しくて、あなたのような好奇心を持った研究者が減るとサイバーセキュリティ大臣みたいなパソコンすら利用していないお爺ちゃんしか残らないのですから。18:04somuさん、私も遠慮無く聞いていいと思います。「ASLRさえない環境でのとても単純な攻撃を犯罪に使えるかもしれないと捉え」て言いがかりをつけてくるようなような判断力の低い人の話を真に受ける必要はありません。CTF頑張ってください。somuさん、私も遠慮無く聞いていいと思います。「ASLRさえない環境でのとても単純な攻撃を犯罪に使えるかもしれないと捉え」て言いがかりをつけてくるようなような判断力の低い人の話を真に受ける必要はありません。CTF頑張ってください。2セキュリティの実験がうまくいきません。0UbuntuのQtで下記のコードmain.cをコンパイルしています。0fgetsを使用した際のエラーが解決できません。頂いたご意見への回答は行っておりません。