黑客到底比普通程序员高在哪里?
假设老板今天给了我们一个任务,让我们判断一个IP是否在线。我们可以用Python编写ping IP代码importost=input('请输入要检测的IP:')result=os.popen('ping-C 1-t1%s'%(主机))。Read()如果'ttl'inresult:Print('Ip online')否则:Print('Ip offline')。
现在,作为一个代码审阅者,您不会考虑代码的总体结构,也不会考虑编写此代码的程序员为什么使用Ping或Popen。你觉得有什么问题吗?如果没有,请考虑两个问题:波本的本质是什么?如果您不知道或没有使用过Popen,请不要查找它并猜测此函数的用。在这个程序中,Popen要执行的命令是什么?既然 popen 后面执行的语句中的 host 变量是由用户输入的,那恶意用户是不是可以输入一个localhost && whoami 呢?这样 popen 执行的代码就变成了 ping -c 1 -t 1 localhost && whoami。注意,就算上述例子中没有将运行结果直接打印出来,但没打印出来并不代表代码没有运行。例如如果我直接输入 host 为 localhost && whoami的话,输出结果还是 IP 存在, 但这并不代表 whoami 命令没有运行,我们依旧可以建立一个 Reverse Shell。为了验证结果,我们在代码里面让 result 被打印出来。
这种技术称为命令注入。如果普通程序员没有遇到这种问题,他们就不会碰这种技术。当他们看到上面的漏洞代码时,他们会觉得没有问题。他们至多认为这有点不愉快,但能反映出第一时间安全漏洞的少数人是少数。这听起来像是一种简单的技术,比反向和动力提升简单得多。但这项技术很有创意,有低下限和高上限。例如,我们现在知道上面的问题存在,所以在输入阶段中过滤一些关键字是可以的。在这个问题中,我们希望用户输入一个IP地址,所以我们需要直接过滤掉空间。普通IP地址中没有空格。
我认为它在脆弱性敏感度和创造力方面都很强。在CVE、黑客论坛等场所提高脆弱性敏感度需要花费大量时间,而创造力只有靠天赋和运气才能提高。你可能认为有很多方法可以避免这个例子。首先,我承认这个例子是一个暂时的例子,这是不好的,但请注意,我的例子是非常简单和不成熟的。在现实的红蓝战场上,以SQL注入为例,经过这么多年,我们能完全避免它吗?我记得今年年初黑网曝光的收藏数据库,1000克各种注入数据库,涉及世界各地的各种论坛,甚至包括一些银行、一些人口办公室和一些政府机构。代码思想是有限的,创造力是无限的。
黑客(英语:Hacker,或称骇客),是指对计算机科学、编程和设计方面具高度理解的人。
Hacker有一词有几种不同的意思:
1.在信息安全(Information security)业里,“黑客”指研究智取计算机安全系统的人员。这包括利用公共通讯网路,如互联网和电话系统,在未经许可的情况下,载入对方系统的黑帽黑客(英语:black hat,另称cracker),也包括调试和分析计算机安全系统的白帽黑客(英语:white hat)。最早用来称呼研究盗用电话系统的人士。
2.在业余计算机方面,“黑客”指研究修改计算机产品的业余爱好者。1970年代,很多的这些群落聚焦在硬件研究,1980和1990年代,很多的群落聚焦在软件更改(如编写游戏模组、攻克软件版权限制)。
3.依照RFC 1392,“黑客”是“一位热衷于研究系统和计算机(特别是计算机网络)内部运作秘密的人”。根据此宽容的定义黑客也可以包括很多计算机和互联网技术创造者。
有些说法是:应明确的区分开Hacker与cracker的概念:
“黑客”和“骇客”当中的中文音译“黑”或“骇”字总使人对黑客有所误解,真实的黑客所指主要指的是高级程序员,如Linux创始人林纳斯·托瓦兹,而不是为人所误解专指对电脑系统及程序进行恶意攻击及破坏的人。除了精通编程,精通操作系统如Unix的人可以被视作黑客外,现在精通网络入侵的人也被看作是“黑客”,但一般被称为骇客,对硬件设备创新的工程师通常也被认为是黑客。
“骇客”(Cracker)一词一般有以下意义: 一个恶意(一般是非法地)试图破解或破坏某个程序、系统及网络安全的人。
但事实上,“黑客”原有的褒义含义早已淡化或已经完全失去,一般都是指非法入侵者
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!