设为首页 收藏本站
查看: 1063|回复: 0

[经验分享] Perl数据类型安全研究

[复制链接]

尚未签到

发表于 2018-8-30 11:42:19 | 显示全部楼层 |阅读模式
0x00 背景

  前几天有个人在某大会上讲了一个在perl中存在了20年的问题。作为一个只会perl不会python的人,真的很心痛。看完视频后感觉被黑的吃不下东西。
  这俨然就是一场对perl的吐槽批斗大会,整个演讲充满了sucks、fuck等和谐词汇,也能看出演讲者是多么的义愤填膺,场下一次次的鼓掌和附,嗯,让我想起了郭德纲。
0x01 问题

  言归正传,这个在perl中存在了20年的问题到底是啥呢?抛去perl的语法的槽点,真正的问题在data types上,对的,就是数据类型。
  Perl对数据类型的处理真是有点匪夷所思了。
  我们先了解一下perl中的变量有哪几种。
  perl中的变量
  perl的数据类型分为三类:标量$,数组@,哈希%。
  具体定义在这里不多说,我们来看几个例子:

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

  我们来看看几个特殊的情况,下面每个预期值为正常人类理解应该得到的结果。
@array =(1, 2, 'a', 'b', 'c');  
print $array[0];
  预期值 1

  实际值 1
  $scalar = (1, 2, 'a', 'b', 'c');
print $scalar;
  预期值 1

  实际值 c 我擦泪,为毛会是c!太不科学了,继续往下看。
@list = (1, 2, 'a', 'b', 'c');  
print scalar @list;
  预期值 1

  实际值 5 呵呵,他把数组的长度输出了。
  再看看这个哈希的例子
%hash = (1, 2, 'a', 'b', 'c');  
print $hash{'a'};
  预期值 木有

  实际值 b 为毛把b给输出了,谁能告诉我这头草泥马是怎么处理的。
0x02 漏洞
  这些问题会产生什么漏洞呢?
  一起看看在web中php跟perl处理的对比。


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

  php很好的处理了传入的数据,而perl的做法就是草泥马在奔腾%>_ 'b',         'c' => 'd',  
         'e' => @list};print $hash;
  预期值
{'a' => 'b',  
'c' => 'd',
  
'e' => ['f','lol','wat']
  
}

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

  这是多大的一个坑啊!看Bugzilla是怎么掉进去的。
  http://zone.wooyun.org/content/15628
  关于数据类型的这些问题我不想再说了,有些恶心。
0x03 GPC的问题


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

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

  我想静静。
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

  •   本文来自:Linux教程网



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-558899-1-1.html 上篇帖子: perl DBD Informix install and test 下篇帖子: Perl DBI实例讲解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表