検索条件
全1件
(1/1ページ)
中身が↓の「image.png」ってファイルをサーバに置いてIE6でアクセスすると普通にJSを解釈してアラートが出てくるので画像を画像と見抜く必要があります。(徳丸本によるとIE7でもJSを解釈する)
<script type="text/javascript">alert('XSS');</script>
それがFile::LibMagicでできるようなのでインストールします。
cpanm File::LibMagic -v
Can't link/include 'magic.h', 'magic'
libmagicがないっぽいのでやり直し↓
yum install file-devel
cpanm File::LibMagic -v
Perlのコード↓(image.png以外は拡張子に対応した普通のファイルです)
#!/usr/bin/env perl
use strict;
use warnings;
use feature qw/say/;
use File::LibMagic;
my @files = qw/image.png libmagic.pl
kubota4.png hentai.jpg yui.gif footer.js/;
my $libmagic = File::LibMagic->new;
for my $file (@files)
{
say "$file:";
say $libmagic->checktype_filename($file);
say $libmagic->describe_filename($file);
print "\n";
}
出力↓
image.png:
text/plain; charset=us-ascii
ASCII text, with no line terminators
libmagic.pl:
text/plain; charset=us-ascii
a /usr/bin/env perl script text executable
kubota4.png:
image/png; charset=binary
PNG image data, 118 x 118, 8-bit/color RGBA, non-interlaced
hentai.jpg:
image/jpeg; charset=binary
JPEG image data, EXIF standard
yui.gif:
image/gif; charset=binary
GIF image data, version 89a, 29 x 32
footer.js:
text/plain; charset=us-ascii
ASCII text
他にもCPANには「File::MimeInfo::Magic」もあるけど試せていません。画像だけならここまでしなくても良いかもしれませんが、ライブラリ使っとくのが無難でしょうかね。