Perl数据类型安全研究【翻译】

admin 2019年5月12日07:20:12评论214 views字数 1639阅读5分27秒阅读模式
摘要

前几天有个人在某大会上讲了一个在perl中存在了20年的问题。作为一个只会perl不会python的人,真的很心痛。看完视频后感觉被黑的吃不下东西。

0x00 背景


Perl数据类型安全研究【翻译】

前几天有个人在某大会上讲了一个在perl中存在了20年的问题。作为一个只会perl不会python的人,真的很心痛。看完视频后感觉被黑的吃不下东西。

这俨然就是一场对perl的吐槽批斗大会,整个演讲充满了sucks、fuck等和谐词汇,也能看出演讲者是多么的义愤填膺,场下一次次的鼓掌和附,嗯,让我想起了郭德纲。

0x01 问题


Perl数据类型安全研究【翻译】

言归正传,这个在perl中存在了20年的问题到底是啥呢?抛去perl的语法的槽点,真正的问题在data types上,对的,就是数据类型。

Perl对数据类型的处理真是有点匪夷所思了。

我们先了解一下perl中的变量有哪几种。

perl中的变量

perl的数据类型分为三类:标量$,数组@,哈希%。

具体定义在这里不多说,我们来看几个例子:

Perl数据类型安全研究【翻译】

不管是标量、数组还是哈希(字典),定义跟其他语言没什么区别。

Perl数据类型安全研究【翻译】

我们来看看几个特殊的情况,下面每个预期值为正常人类理解应该得到的结果。

@array =(1, 2, 'a', 'b', 'c'); print $array[0]; 

预期值 1

Perl数据类型安全研究【翻译】

实际值 1

$scalar = (1, 2, 'a', 'b', 'c');  print $scalar; 

预期值 1

Perl数据类型安全研究【翻译】

实际值 c 我擦泪,为毛会是c!太不科学了,继续往下看。

@list = (1, 2, 'a', 'b', 'c');  print scalar @list; 

预期值 1

Perl数据类型安全研究【翻译】

实际值 5 呵呵,他把数组的长度输出了。

再看看这个哈希的例子

%hash = (1, 2, 'a', 'b', 'c');  print $hash{'a'}; 

预期值 木有

Perl数据类型安全研究【翻译】

实际值 b 为毛把b给输出了,谁能告诉我这头草泥马是怎么处理的。

0x02 漏洞


这些问题会产生什么漏洞呢?

一起看看在web中php跟perl处理的对比。

Perl数据类型安全研究【翻译】

Perl数据类型安全研究【翻译】

这么看来是木有任何问题的,那么使用复参的时候呢?

Perl数据类型安全研究【翻译】

php很好的处理了传入的数据,而perl的做法就是草泥马在奔腾%>_<%他是直接可以传入数组的。

再深入一下,看看当数组和哈希结合的时候的情况。

@list = ('f', 'lol', 'wat'); $hash = {'a' => 'b',          'c' => 'd',           'e' => @list }; print $hash; 

预期值

{ 'a' => 'b','c' => 'd','e' => ['f','lol','wat']  }  

Perl数据类型安全研究【翻译】

神马情况,数组中的“,”变成了“=>”又给赋值了?e=>f、lol=>wat,what the f*cuk!

Perl数据类型安全研究【翻译】

这是多大的一个坑啊!看Bugzilla是怎么掉进去的。

http://zone.wooyun.org/content/15628

关于数据类型的这些问题我不想再说了,有些恶心。

0x03 GPC的问题


Perl数据类型安全研究【翻译】

Perl数据类型安全研究【翻译】

屌屌的棒棒的,对吧,可是……

Perl数据类型安全研究【翻译】

我了个*,一个都不给转义了,就这么罢工了,可以顺顺畅畅的注入了好么。

Perl数据类型安全研究【翻译】

我想静静。

0x04 来源


Pdf:

http://events.ccc.de/congress/2014/Fahrplan/system/attachments/2542/original/the-perl-jam-netanel-rubin-31c3.pdf

视频地址:

http://media.ccc.de/browse/congress/2014/31c3_-_6243_-_en_-_saal_1_-_201412292200_-_the_perl_jam_exploiting_a_20_year-old_vulnerability_-_netanel_rubin.html#video

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2019年5月12日07:20:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Perl数据类型安全研究【翻译】https://cn-sec.com/archives/63429.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息