FrontPage > Armadillo-9 > exploit xpdf

xpdf へのバッファオーバーフロー攻撃

環境

実行結果

攻撃対象、条件

脆弱性のある関数

脆弱性の詳細

注意点

攻撃の詳細

攻撃対象の変数

ローカル変数の配置は以下のようになっている。

| 0x00000000
|[maskColors] //攻撃対象
|[maskObj] //maskColors の取得に必要な変数
|...
|[return address]
| 0xffffffff
Debian Sarge の環境では、maskColors の先頭からリターンアドレスまでは 320 バイト離れている。

参考

void Gfx::doImage(Object *ref, Stream *str, GBool inlineImg) {
  Dict *dict;
  int width, height;
  int bits;
  GBool mask;
  GBool invert;
  GfxColorSpace *colorSpace;
  GfxImageColorMap *colorMap;
  Object maskObj;
  GBool haveMask;
  int maskColors[2*gfxColorMaxComps];
  Object obj1, obj2;
  int i;
  ...
  // get the mask
  haveMask = gFalse;
  dict->lookup("Mask", &maskObj);
  if (maskObj.isArray()) {
    for (i = 0; i < maskObj.arrayGetLength(); ++i) {
      maskObj.arrayGet(i, &obj1);
[!]   maskColors[i] = obj1.getInt();
      obj1.free();
    }
    haveMask = gTrue;
  }
  ...
}

その他

pdf の仕組みなどが解ったら書いていく。

Image オブジェクト(?)がある行に、いきなり /Mask などを追加すると、xref テーブルが壊れているとかなんとか言われてしまうが、一応読めはするらしい。

Author とか Creator の後に並んでいる 16進数のようなものは、ビッグエンディアンの Unicode のようだ。ただ、これも書き換えると xref テーブルがどうのこうの言われる。


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-09-13 (土) 08:26:38