質問するログイン新規登録

Q&A

解決済

2回答

2219閲覧

echo perl入力を溢れさせられない

kazuyakazuya

総合スコア193

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

0グッド

0クリップ

投稿2019/11/25 09:57

編集2019/12/10 10:21

0

0

Virtial Box上のCentOSで
scanf関数にecho・perlコマンドを使って
パイプを作りバッファを溢れさせる入力をさせたいです。

c

1#include <stdio.h> 2 3int sub(); 4 5int main(void){ 6sub(); 7return 0; 8} 9 10int sub(){ 11char moji[15]; 12scanf("%s\n",moji); 13int * p; 14int *subp; 15subp = main; 16printf("This is main ReturnAddress: %p\n",subp); 17printf("%d\n",sizeof(subp)); 18int *p; 19p = (int*)moji; 20int ebpofs; 21for(ebpofs=-32;ebpofs<80;ebpofs++){ 22printf("addr%p price:%x",p + count,p[count]); 23} 24return 0; 25} 26

このプログラム adr に対して

cmd

1echo -e "AAAAAAAAAAAAAAAAAAA" | .adr 2または 3perl -e 'print "A"x20' | ./adr

のように文字列を流してやると・・・

イメージ説明

41のところ
15バイト分しか受け取られていません。

なぜでしょうか?
ホストのwindows上ではechoコマンドを使ってバッファを溢れさせることができたのですが・・・
CentOSではできないようでもなっているのでしょうか?
分からないのでお願いします。
イメージ説明
イメージ説明
sub関数逆アセンブル
イメージ説明
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

rubato6809

2019/11/25 10:31

そのプログラムコードをうごかしても、その実行結果の表示にはなりません。コードと結果を一致するものにしてください。
kazuyakazuya

2019/11/25 10:56

訂正しました。
guest

回答の取得に失敗しました

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問