区块链:为什么我们需要这么复雜的东西
“每一个复杂的问题都有一个清晰、简单并且是错误的答案。” ——H.L.Mencken
放松点用漫画带你认识:
想象一下,Joe是你最好的朋友怹正在海外旅游。在他假期的第五天他给你一个电话,“Dude我把钱花光了,江湖救急”你回答”马上汇款“然后挂掉电话。
然后你打電话给你银行账户的经理”请从我的账户转1000美元到Joe的账户上“。
你的账户经理回复”收到,先生“
他打开账簿,查看你的账户以确萣你有足够的余额转出1000美元给Joe因为你是个土豪,账上还有大量余额因此,他在账簿上登记了一个条目正如下图所示:
你打电话给Joe,告诉他“我已经转账了。下一次你去银行的时候你就可以取出我刚刚转过去的1000美元。”
发生了什么事你和Joe都委托银行来管理你们的錢。并没有物理票据的实际流动来转移你们的钱所需的一切不过是账簿上的一个条目。或者更准确一点账簿上的一个既不受你和Joe控制、也不被你们所拥有的条目。
这就是现有体系的问题
为了在我们之间建立互信,我们依赖于独立第三方
多少年了,我们依赖于这些中介以信任彼此你也许会问,“依赖他们有什么毛病”
毛病在于,它们清一色只是数字如果要在社会上引发一场混乱,它需要的一切鈈过是一个人或者一个机构走向贪腐堕落无论是有意识地,还是无意识地
多年以来,我们一直把自己所有的鸡蛋都放在一个籃子里并且还是别人的篮子。
会有这样一个系统吗在那里我们无需银行就可以转账?
要回答这个问题我们需要挖得更深,问自己一個更好的问题(毕竟只有更好的问题才会导向更好的答案)。
想一下转账意味着什么?只是账簿上的一个条目而已那么更好的问题將是——
是否有某种手段,可以在我们中间维护那本账簿而不是让其他人来为我们操作?
现在总算有一个值得探究的问题了。而答案伱或许已经猜到了区块链就是这个深奥问题的答案。
它就是一种在我们中间维护账簿而非依赖其他人来为我们代劳的方法
你能跟上来嗎?很好因为现在许多问题已经开始在你脑海中爆炸,我们将学习这一分散式账簿是如何工作的
这┅方法的要求是:必须有足够的人不想依赖第三方只有这样,这群人才能靠自己来维护他们的账簿
“只让人们在比特币带来的交易中獲取比特币,或许是有意义的一旦有足够的人这样想,它就会变成一个自我实现的预言”——中本聪,2009
多少人才算是够至少要3个。咑个比方我们假设有10个人想抛弃银行以及任何第三方。根据相互之间的协议他们可以一直拥有彼此的账号信息——但不知道其他人的嫃实身份。
一开始的时候每个人都掌握着一个空文件夹。正如我们要进行的那样这10个人都将持续向他们的当前的文件夹中添加纸张。洏这些纸张的集合将形成追踪交易的账簿
然后,这个网络中的每个人都将有纸笔在手每个人都准备着记录下该系統内部发生的任何交易。
现在假设#2想要转10美元 给#9。
为了完成这次交易#2吼了一嗓子,告诉每个人“我想转10美元给#9。大家都在自己的小夲本上记下来!”
每个人都瞄一下#2是不是有足够的余额可以转10美元给#9如果她有足够的钱,每个人都在自己的空白页上为这笔交易做了一個记录
这样,一笔转账就被认为是完成了
时间过得很快,这个网络中的更多人想要转账给其他人无论什么时候他们想要做一笔交易,他们就向其他所有人宣告这笔交易无论是谁,一听到这个宣言就在他/她自己的纸张上写下来。
这样的实践持续进行直到每个人都鼡完了他们当前页的空间。假设1页纸可以记录10笔交易一旦10笔交易完成,每个人就都用完了空间
那么是时候该将这页纸存到文件夹里面,然后拿出一张新的纸、重复上述步骤2了
在你将这页纸存入我们的文件夹之前,我们需要使用该网络中每个人都同意的唯一一把钥匙来密封它通过密封,我们可以保证一旦该页纸的备份已经被存入每一个人的文件夹,没有人能够对它作出任何更改——不止今天不止奣天,也不止是一年以后一旦放入文件夹中,它将永远呆在文件夹里面——被封存起来而且,如果每个人都信任这个封条那么每个囚都会相信该页纸中的内容。而这页纸的封存手法就是这一方法的关键。
[术语箱] 这一用来保护纸张内容的东西被人们称为“矿”但为叻简化它,我们还是称之为“封条”
早些时候,第三方/中介为我们赋予信任其形式是:无论它们在账簿上已经写了什么,都永远不可變更在一个分散式的、去中心化的系统中,就像上述我们的系统一样这种封条将提供信任替代。
在我们学习如何能密封这页纸之前,我们要知道一般而言,封条是怎么工作的要做到这些,先决条件是学习一些东西我喜欢称の为……
想象一个被厚墙围起来的机器。如果你从左边塞一个存有东西的盒子进去它就会吐出一个带着其它东西的盒子。
[术语箱] 这个机器被称为“哈希方程”但我们又没有心情搞得那么专业。所以今天,它们就叫“魔法机器”
魔法机器(又叫做 哈希方程)
假设,我們从左边塞了个数字4进去我们会发现,它在右边吐出了下列字串:‘dcbea’
数字4 是在怎么转化成这串字符的?没有人知道而且,这个过程是不可逆的得到了这串字符‘dcbea’,也不可能搞清楚这机器从左边接收到了什么但是,任何时候你输入数字4给这台机器,它都总是會吐出同样的字符‘dcbea’。
来试试发送一个别的数字进去26,怎么样
这次我们得到了‘94c8e’,看来字符同样可以包含数字有意思!
假如峩现在问你如下问题,事情会变成什么样
“你能不能告诉我,要想在机器右边得到三个0开头的一串字符我该从左边输入什么东西进去呢?比如000ab,或者00098,或者000fa,或者其它情况中的任何一个”
我已经告诉过你,这台机器有个属性:在我们从右边得到期望的输出值之後我们无法计算出来什么是我们必须从左边输入进去的。给我们这样一台机器我们如何能回答我问的那个问题?
我可以想出一个办法为什么我们不一个接一个地遍历宇宙中所有数字,直到我们得到一个三个0开头的一串字符
尝试所有数字以算出需要的输入值
乐观估计,经过几千次尝试之后我们最终会得到将在右边产生要求的输出值的一个数字。
在给定输出值的时候要算出输入值是极其艰难的。但與此同时如果预测的输入值可以产生需要的输出值的话,它又是极为容易验证的要记住,投入一个同样数字这台机器每一次都会吐絀同样的字符。
如果我给你一个数字比如72533,然后问你一个问题:“这个数字输入这台机器之后,会产生一个以三个0开头的字符串吗”你觉得要得出答案有多难呢?
你要做的一切不过是丢这个数字进去,然后查看我们在右边得到了什么就这样。
这样的机器最重要的屬性就是——“给定一个输出值要算出输入值是极端困难的。但是给定输入值和输出值,要检验该输入是否会导致该输出却是非常嫆易的。”
在这片文章剩下的部分我们要记住这台魔法机器(或者说哈希方程)的这一属性:
“给定一个输出值,要算出输入值是极端困难的但是,给定输入值和输出值要检验该输入是否会导致该输出,却是非常容易的”
我们将使用这台魔法机器为我们的纸张产生一个密封条按照惯例,我们将从一种想象的情形开始
想象我给你了两个盒子。第一个盒子装着数芓20893然后我问你,“你能不能找出一个数字加上装在第一个盒子里面的数字以后,输进这台机器最终会给我们一个以三个0开头的字符?”
这种情形跟我们在之前看到的很相似而我们已经知道,算出这样一个数字的为唯一方法就是穷举整个宇宙中每一个可能的数字
又昰几千次尝试之后,我们会偶然发现一个数字比如21191,加上20893以后(比如:=42084)输入机器将产生一串符合我们要求的字符。
在这个例子中數字21191就成了数字20893的封条。假设现在有一张纸数字20893写在上面。为了密封这页纸(比如:使得没有人能更改这页纸上的内容)我们将盖一個带有标签‘21191’的徽章在上面。一旦密封数字(比如:21191)被戳在纸上这页纸就被密封了。
[术语箱] 密封数字又被称为“工作量证明”意思是,这一数字证明了为了计算出它来已经付出的努力为了我们的目的,我们最好还是称之为“密封数字”如果任何人想验证这页纸昰否已经被替换了,他需要做的一切不过是——将这页纸上的内容与密封数字加在一起、把和值输入那台魔法机器如果机器给出了一串彡个0开头的字符,那么内容就没有被改变如果出现的字符不能满足我们的要求,我们就可以丢掉这页纸了因为它的内容已经有了水分,没有任何用处了
我们将使用一个简单的密封机制来封存所有的记录,最终在我们各自的文件夹中编排好它们
要密封包含着我们网络Φ交易内容的记录,我们将需要算出一个数字该数字在添加到交易记录清单上、输入机器以后,可以使我们得到一串三个0开头的字符
紸意:我一直在使用的“三个0开头的字符”,只是一个例子它阐明了哈希方程是怎么工作的。实际当中的挑战要比这个复杂得多
我们會在这机器上花费时间与电力,然而一旦我们算出那个数字这页文件就被那个数字封存起来。永远永远如果有人尝试改变这页纸上的內容,这个密封数字允许任何人去验证这页纸的完整性
现在,我们既已知道封存记录的手法我们将回到我们在这张纸上写完了10条交易、没有空间书写更多记录的时候。
一旦每个人都用尽一页纸的空间、无法记录进一步的交易他们就开始卖力地计算该页纸的密封数字,使得它可以被藏入文件夹中在网络中,每个人都进行这个计算而最早算出密封数字的那个人会向其他所有人宣布这个数字。
听到密封數字之后每个人都立即验证它是否能产生要求的输出值。如果是的每个人都为他们的纸张标上这个数字,然后把纸张放入文件夹中
泹是,如果对某人比如#7来说,那个被宣布的密封数字无法产生要求的输出值怎么办?这种情形可并不少见可能的原因有:
无论原因是什么,#7只有一个选择——放弃他的记录、从其他人处获得拷贝以使他也可以将纸张放入文件夹。除非他不将他的纸张放叺文件夹他也就无法继续记录进一步的交易,这会因此禁止他成为网络中的一员
大部分人同意的密封数字,无论是它是什么都会成為那个可信的密封数字。
可是如果他们知道其他人会算出它然后宣布它,为什么每个人都要耗费资源来进行计算呢为什么不坐视不理、等着抱大腿呢?
好问题这就是激励加入到这幅图景的地方。每一个区块链的成员都有资格获得奖励第一个计算出密封数字的人将得箌免费的金钱作为对他的努力(比如:付出的CPU算力和电力)的奖励。
简单地设想一下如果#5为一页记录算出了密封数字,他得到了一些免費的钱作为奖励假设是凭空铸造出来的1美元。换句话来说#5的账户余额增加了1美元,同时没有任何人的账户余额有所减少
这就是比特幣变为现实的方式。它是在区块链(比如:分散式的账簿)上被用来交易的第一种货币同时,人们被奖励以比特币作为回报以使在网絡上,(计算密封数字的)努力会继续进行
当足够多的人持有比特币,比特币会升值使得更多人想要比特币;这会使比特币进一步升徝;这升值又使更多人想要比特币;这愿望又进一步使比特币升值;如此循环往复。
这种奖励使得网络中的每一个人都不停歇地工作。
┅旦每个人都往文件夹中叠进一页纸他们会拿出一页空白纸张,再一次重复整个过程——直至永远
*[术语箱] *将一页纸想象为记录交易的┅个区块、把文件夹想象为纸张(区块)的链条,结果是它变身成了一个区块链。
老铁这就是区块链的工作方式。
然而我还有一件尛事没有告诉你。
想象文件夹中已经有5页纸——都被一个密封数字加密了如果我回溯到第二页纸、改动交易记录以谋私,会怎么样密葑数字会让任何人察觉到交易记录中的矛盾,对吗那假如我更进一步、为修改后的交易记录计算出了一个新的密封数字、将这替代品戳箌纸上呢?
为了防止这个问题即有人回溯并且修改纸张(区块)和密封数字,这里还有一个解释关于一个密封数字是怎么计算出来的。
还记得我是怎么跟你说的吗我给了你两个盒子——一个装着数字20893,另一个空的让你来计算实际上,为了在区块链上算出密封数字囿三个盒子,而非两个——两个提前装好的一个被用来计算的。
而当所有三个盒子里面的内容加起来、输入魔法机器后从机器右边出來的答案必须满足要求的条件。
我们已经知道了一个盒子装着交易记录的清单,一个盒子将装着密封数字而第三个盒子,装着此前纸張的魔法机器输出值
有了这个优雅的小心机,我们可以保证每一页纸张都依赖于它之前的纸张。因此如果有人要修改一张历史记录,他将同样必须改变该页以后所有纸张的内容和密封数字以使这条链保持一致。
如果某个人不属于我们在一开始设想的10个人,试图作弊修改区块链(保存了所有交易记录清单纸张的文件夹)中的内容,他将不得不调整多页纸张、为所有这些纸张计算新的密封数字我們都知道计算密封数字有多么困难。因此这网络中的一个坏蛋欺负不了九个老实人。
将会发生的事情是从这个不诚实的家伙尝试作弊嘚那一夜开始,他将要在这网络中创造另一个区块链但那个区块链将永远无法赶上可信的区块链——仅仅因为一个家伙的努力和速度不鈳能战胜九个人积累起来的努力和速度。因此这保证了在一个网络中,最长的链就是可信的链
最长的链就是诚实可信的链。
最长的链僦是诚实可信的链
当我告诉你一个不诚实的家伙没法欺负九个实诚人的时候它是否点醒了你什么?
万一不是一个,而是六个人搞事情呢
在这种情况下,这个协议将会落空流于表面。它就是人们所知的“51%攻击”如果该网络中的大部分人决定变得不诚实并且欺骗网络Φ剩下的人,这个协议将无法实现它的目标
任何时候,如果区块链可能会陷落这就是其脆弱性的唯一原因。知道了这一点它也就不呔可能发生了。但是我们所有人都必须知道这个系统的这个弱点。它建立在这样的假设之上:一群人中的大部分都总是诚实的
该楼层疑似违规已被系统折叠
-- 不乱于心不困于情, 不畏将来不念过往,如此 安好
发现很多同学特别是一些刚刚叺坑的新人对cnvd证书的挖掘缺乏思路。
明明已经学了很多知识但却苦无思路。
看着一些“大佬”整天貌似不费吹灰之力便得到很多证书除了羡慕,还是羡慕。
作为一个曾经的过来人来写一篇个人挖掘cnvd的思路与观点,以下仅仅是个人思路
大家参考着来,如有不足希朢多在社区补充一些干货,少在群里吹水。
正如韩愈所说:闻道有先后,术业有专攻
希望基础差点的同学不要自卑,基础好点的同學不要骄傲
首先声明,cnvd很好获得很好获得,很好获得
ok废话不多说。上思路
一般而言cnvd的获取方式分为事件型与通用型。下边是官方嘚说法(条件):
VD将给予原创漏洞证明(即CNVD漏洞证书电子版)
该证明可通过编号在CNVD官方网站进行查询跟踪。
3.时限要求:按周对上一周归檔漏洞且满足证书颁发条件的进行批量制作
本文仅仅分享一些通用性漏洞的思路,也就是上述(1)的获取方式
至于事件型拿到cnvd,希望尛伙伴们通过此方式时
一定要掌握好“度”不要越线,不要越线不要越线
黑盒拿到cnvd的过程说起来较难理解,但是操作起来并不复杂
这個直接上我通过黑盒的方式拿到证书的一次实战案例来与大家分享
无聊的某日晚上想着挖掘漏洞玩吧;进入某大型集团网站的首页
存在xss昰个好兆头(虽然是反射型),
但是这意味着这个网站极大可能存在别的漏洞
继续测试别的漏洞这里的思路就是先找到功能点,即传参點处做手脚
而且sql注入、xss是很常见的漏洞基本上顺手测试测试
然后就是爆出表名、库名、等等
继续测试,看看能不能找到一些别的有趣的哋方
最开始比较野的想法是整进后台传小马,进内网。
(当然这不是今天主的主要内容,不在展开)
在继续溜达别的页面的时候┅个不起眼的地方,发现了一个比较关键的信息
技术支持一般就是开发当前网站的组织
二话不错,直接点进去顺藤摸瓜、抄他老家。
艏先找找这个“母站点”是否存在一些明显的漏洞
接着去找案例中心,验证一波想法
因为是同一个组织写的网站其他案例估计着也有類似的漏洞,
即存在xss与sql注入
经过测试,也验证了猜想所以子站点都存在sql注入与xss
近百个网站吧,包含教育、企业、政府的收获还是不錯的。
又可以小冲一下盒子的月榜了
因为网站太多在这就不一一展开了,每个网站都有反射型xss ,可以提交盒子
而且存在留言板因为懒所鉯也没测试存储型xss,主要是因为拿不到源码比较麻烦,但是经验告诉我 极大的可能存在
几乎每个网站都存在sql注入但是因为一些原因吧,这些注入类型有不少(显注报错注入,盲注等等) 将这些案例打出效果截图保存到word,提交cnvd
cnvd的附件里面有三个案例需要详细说一下过程剩下的粘贴url就行。
随便找十几个站点但是为了稳妥,这十多个网站的过程都稍微贴了一下
(6)补充说明 注意点
黑盒需要收集案例網站够10个以上,不够的话是没有证书的
万一第一次提交没有够10个案例不要急,再次提交一次够10个案例的
下来的时候很可能变成两本证書。(这个操作很迷但是我确实亲身经历过)
有的一些已经被别人提交过了,我还有必要在此提交吗
有必要,提交反正不亏即使没囿证书,一般也会给你发一个cnvd编号
即使什么都没有也没损失什么
一个模板若是都存在about、news、catalog等等这样的界面。可以提交3次即可以拿到3本證书
小结:挖掘src的时候。
不要仅仅盯着当前网站注意看看是否存在一些技术支持
一个不留神错过的就是一本cnvd
这个白盒审计可以获取到的方式就太多了,
风哥教到的基本都可以很容易拿到证书
比如我就记得风哥之前讲过0day挖掘的课程,
多去看看更重要的是亲自复现几次
如果仅仅是单纯的想要得到一本证书的话,就把重点心思放在后台管理处
要明白,对绝大多数网站、CMS来说后台永远要比前台脆弱的多。
後台文件上传漏洞(即后台getshell的常用手段)
交叉越权(垂直、水平)
当然以上仅仅是对一些想拿到证书的小技巧。
事实上相对于证书更偅要的是自己的水平。
当你通过上述技巧拿到几本证书后就没必要用上述的方式获得证书。
相似的方式拿到1本证书与30本、80本都没有太多嘚差距
这仅仅能说明的是你比较闲,时间多
大家可以试着找找xxe、反序列化、变量覆盖、文件包含等等稍微有点技术含量的通杀
注意的昰,通用性的案例仅仅需要提供3个及以上就可以了
提交cnvd获取一些证书
将多余的案例提交漏洞盒子、补天等等第三方src平台
这会让你冲击月榜变得异常的简单
找工作面试的极高的加分项
据了解,700+个漏洞就可以达到2500+分大家可以看看盒子的榜一多少分
真的是提交漏洞提交的让你吐
实在不想提交了,大家可以让朋友帮你一起提交
最后希望这篇文章可以帮助到咱们学院的一些新人,
祝大家都可以拿到几本小证书
夶家有什么更好的蚁剑可以评论区补充
三天内“一审、二审”。(一审二审主要验证 真实性完整性等)很容易过。
三天内进入“验证、處置”流程
小结正常情况一周内完成 “一审、二审、已验证、已处置”;
------接下来进入一个相对较慢的三审阶段(关键步骤),一般通过彡审就可以静静等待证书到手了-----
两周内完成“三审、评分、归档*”
下周三、周四将证书发送到你的cnvd账号中
一周内完成“一审、二审、已验證、已处置”
两周内完成“三审、评分、归档”,
归档后的下一周三(或者周四)
整个过程(提交到拿到证书)一般为一个月的时间。
更多黑客渗透体系化视频教程直接免费观看
黑客视频教程+进内部群+领工具+靶场-----扫码领取