一个程序员的黑客梦

微信扫一扫,分享到朋友圈

一个程序员的黑客梦

张大胖上大学的时候就对网络安全非常感兴趣, 经常上网去搜索那些传奇的黑客故事,然后心里痒痒的想小试牛刀。

那个时候大家的安全意识非常薄弱,张大胖学会了SQL注入以后,居然用它获得了一个BBS网站的用户列表,并且包括所有的密码——这些密码都是明文保存在数据库中的。

有了这一次的成功经验,张大胖决定向邮箱系统进军。

邮箱系统也好不到哪里去,没有验证码,也没有登录失败几次以后的账户锁定,这就意味着张大胖可以不断尝试密码,直到成功。

当然手工做是不行的,需要软件和密码字典,张大胖搜了一下,发现了小榕写的溯雪:

看到这个工具,张大胖就激动起来,准备找个邮箱做实验, 用谁的呢? 他眼珠一转,为什么不去自己暗恋的女生的邮箱去看看? 就这么办!

张大胖有点像做贼似地输入邮箱的URL,溯雪自动定位到了用户名和密码的表单,记录下了field name,接下来就是等待溯雪去自动尝试了。  

不知道过了多长时间,也不知道溯雪尝试了多少密码,突然间,让人惊讶的事情发生了,居然登录了!

张大胖用发抖的手点开了收件箱,那里只有三封无关痛痒的邮件,还有一个广告,让他好生失望。

怎么办? 在邮箱中写上张大胖到此一游? 张大胖没这个胆量。   修改一下密码? 似乎也没有什么用处。

于是张大胖灰溜溜地退出了。

第二天, 张大胖看了一篇文章《脚本小子》,说脚本小子不像真正的黑客那样发现系统漏洞,他们通常使用别人开发的程序来恶意破坏他人系统, 被真正的黑客所鄙视。

张大胖心想: 这是不是在说我? 我也没做破坏啊,我就是有点好奇而已。  

不过只是用这些工具确实也没啥意思,还是学一点黑客的基础知识吧,先从著名的缓冲区溢出开始。  

真正深入学习以后张大胖就傻眼了,想理解缓冲区溢出, 首先得理解进程在内存的布局,函数调用是如何通过栈帧实现的,参数是怎么传递的,这一切都和汇编密切相关,什么EBP, ESP,RET,让张大胖头晕眼花,不得不恶补了一下大学勉强及格的汇编。

理解了原理还远远不够,还得找到那些具备缓冲区漏洞的程序, 用巧妙构造的输入数据去覆盖返回地址,这样函数调用返回的时候才能跳转到攻击者指定的地方。  

缓冲区溢出详情参见文章《 CPU阿甘之缓冲区溢出

我的妈呀,这是人干的活吗? 张大胖觉得自己智商余额严重不足,但是还不死心,又去学逆向工程,这是对C/C++和汇编的考验,得理解PE,ELF这样的文件格式(和操作系统紧密结合),掌握密码学,加壳脱壳等知识,熟练使用逆向分析工具,调试工具。  

还是明智一点,转战Web安全吧。

同源策略,跨站脚本攻击(XSS), 跨站请求伪造(CSRF), 点击劫持,注入攻击…… 这些东西就比缓冲区溢出要容易理解了,更好玩的是,都是在浏览器中进行,掌握了JavaScript等知识以后,立刻就能玩起来。  

张大胖自己搭建了一个实验的网站,用一些小例子把这些攻击和防御都玩了一遍,比如alert一下"受害者"的cookie, 建立一个简单的钓鱼链接等等。  

学了一段时间以后,张大胖准备在真正网站上小试牛刀,可是他发现这些网站都已经变“精”了,防护得很严密,对输入数据有严格控制, 他好不容易找到一个XSS漏洞,但是费劲了心机,花了好几个小时,也无法注入一段有效的攻击代码。

张大胖叹了一口气,这黑客真不是这么容易当的, 自己不是这块儿料。  

在安全领域,理论和实践之间有着巨大的鸿沟,虽然懂得了原理,但是想要实施一次漏洞攻击,那一定得有非凡的创造力,再加上无与伦比的耐心。

张大胖对当一名黑客丧失了信心,也丧失了好奇心,他开始明白 最初的好奇其实是自己不切实际的幻想 在网络世界中无所不能,行侠仗义。

他果断把精力转到了Web开发领域,走上了开发之路。 不过,他的“黑客经历”也没有浪费,因为在Web开发中,他的安全知识也派上了用场, 帮助公司的产品来堵上安全漏洞,变得更加安全。

注: 真正的黑客是守护者和建设者,不是破坏者。

往期精彩文章

黑客三兄弟

黑客三兄弟(续)

浏览器家族的安全反击战

黑客攻防日记

CPU阿甘

CPU阿甘之缓冲区溢出

2019WAIC展会见闻

上一篇

集中改革一年后,出租车的下一步在哪?

下一篇

你也可能喜欢

一个程序员的黑客梦

长按储存图像,分享给朋友