• 邮件反馈
  • 支持 TK
  • 那年今日
  • 微博

    • 看看最新
    • 那年今日
    • 随便看看
    • 过去一年
  • 文章

    • 皮相专栏
    • 百度空间
    • 焦点博客
  • 探索

    • TK猴子

  • 支持
下个页面那年今日

点右侧微博标记去微博订阅真爱粉群👉

加入tk真爱粉群
tombkeeper
2018-04-11 12:25
@Laruence 昨天修复了 PHP 的一个 Bug:网页链接。

char buf[128];
int wrote;
wrote = snprintf(buf, 128, "Could not translate address '%s'", addr);
buf[wrote] = '\0';

这个问题非常有代表性,是典型的由于程序员对函数特性了解不够造成的。

实际上 snprintf 的相关安全问题比这个例子中表现出来的更复杂。因为 snprintf 不是 C 标准中的函数,但各家编译器又各自做了实现。早期版本 VC 中的 _snprintf 并不完全等同于 snprintf。比如对 snprintf(buf, 4, "%s", "ABCD"),_snprintf 会向缓冲区写入"ABCD",但 snprintf 会写入“ABC\0”。另外,_snprintf 和 snprintf 对返回值处理也不同。当格式化后的字符串长度大于第二形参指定的长度时,_snprintf 会返回 -1,而 snprintf 会返回格式化后的字符串所需要的缓冲区大小。

这就可能导致某些程序在原始开发平台下没问题,但移植到别的系统上时简单地把 _snprintf 和 snprintf 互换就会产生漏洞。(所以上面这个 Bug 也许是一个 Windows 程序员犯的错误——然而即使如此也应该是 buf[wrote-1] = '\0' 啊)

也正由于 _snprintf 和 snprintf 的这些细节差异,上面提到的这个 Bug 在 snprintf 下是有可能实现利用的,反倒是对 _snprintf 则利用的可能性很小。这一点就不细说了。你们可以试试:写一个包含这个 Bug 的小程序,对其实现漏洞利用执行 Shellcode。

图片描述 by gemini-3-flash-preview

详情
tombkeeper
2018-04-11 10:48
微博正文 其中一个“科学,你们懂么”已经孵出来了。
tombkeeper
2017-12-16 08:38被tk转发1次
我辨认微博上的王八蛋还是比较准的。基本上感觉谁是王八蛋,过不多久,就一定能看到小王八孵出来。有些王八蛋不是很明显,甚至看起来颇优雅,然而有些优雅是源于教养,有些优雅是源于极端自恋。王八蛋再优雅也是个优雅的王八蛋。去年有人在评论里夸我说很像某人。我哭笑不得,心想:我乔峰大好男儿…… ​​​
详情
tombkeeper
2018-04-11 03:07
参见赫鲁晓夫对斯大林,永远健康对万寿无疆……//@Laruence:[good]//@响马:[good] //@巢鹏: [good]//@宝玉xp:[good]
2018-04-10 14:02被tk转发1次
抱歉,此微博已被作者删除。查看帮助: 网页链接
详情
tombkeeper
2018-04-10 20:59
真身是这样的: 查看图片 //@冈瓦纳:我也没见过他的真身啊, 也许他就是这样的
普吉岛的奶茶叔
2018-04-10 17:35被tk转发1次
爱因斯坦如果长这样,是不是相对论懂的人会更多一些哈哈哈。@开水族馆的生物男 @长鲸吟 @果壳网 @李淼在微博 @冈瓦纳 ​​​

图片描述 by gemini-3-flash-preview

详情
tombkeeper
2018-04-10 12:57
你们瞧瞧:
2018-04-10 10:51被tk转发1次
该账号因被投诉违反《微博社区公约》的相关规定,现已无法查看。查看帮助 网页链接
详情
1...37153716371737183719...6668