在信息安全领域,Perl和Python一直是安全工作人员的好帮手,开发快速,简单,无须编译直接运行……这些优点,使它们成为写
injector/sender的不二选择。
一般来说,做exploit的初期,通常会需要发送大量的数据,一般来说比较常见的是这样的Perl语句:
$ perl -e 'print "A" x 10240'
$ perl -e 'print "A" x 10240'
我原来也一直在用这样的语句,但是今天想想,为什么一定要用Perl啊,Python其实也有一样的功能嘛:
$ python -c 'print "A" * 10240'
$ python -c 'print "A" * 10240'
小测试了一下,原来用Perl还是有原因的——速度。Perl的速度还真不是盖的。当然,Perl出现得比较早,hacker们形成了传统也说不
定。
- $ time perl -e 'print "a" x 10240' > /dev/null
-
- real 0m0.008s
- user 0m0.000s
- sys 0m0.008s
$ time perl -e 'print "a" x 10240' > /dev/null
real 0m0.008s
user 0m0.000s
sys 0m0.008s
- $ time python -c 'print "a" * 10240' > /dev/null
-
- real 0m0.024s
- user 0m0.001s
- sys 0m0.023s
$ time python -c 'print "a" * 10240' > /dev/null
real 0m0.024s
user 0m0.001s
sys 0m0.023s
再写一个C程序,做同样的事情。
- char buf[10240];
- int i;
- int main()
- {
- for (i = 0; i < 10240; i++)
- buf[i] = 'a';
- write(1, buf, 10240);
-
- return 0;
- }
char buf[10240];
int i;
int main()
{
for (i = 0; i < 10240; i++)
buf[i] = 'a';
write(1, buf, 10240);
return 0;
}
C程序测试结果如下:
- $ time ./test > /dev/null
-
- real 0m0.005s
- user 0m0.000s
- sys 0m0.003s
$ time ./test > /dev/null
real 0m0.005s
user 0m0.000s
sys 0m0.003s
果然还是C语言的最快,不过,Perl和Python在开发上的便捷性弥补了它们在速度上的小劣势。
再回到Perl和Python的比较上来,在做这一件事上,Perl比Python要快,这是没得说的了,数据
说话。因此,在快速测试时,估计我以后也是用Perl来直接输出字符串了。不过在写正式的exploit时,Python比Perl更整洁点,我还是会选
择Python的。
댓글을 달아 주세요
背景很漂亮。