PoW:工作量证明
PoW的理解
PoW通俗讲就是“通过工作以获得指定成果,用成果来证明曾经付出的努力”。
工作量证明须要由工作者和验证者双方共同完毕.它有两层含义.
1.工作者须要完毕的工作必须有一定的量,这个量由验证者给出.
2.验证者能够迅速的检验工作量是否达标,注意这里的检验完毕过程必须简单.
举几个例子:
A跟B说,你给我还原这个魔方,B还原魔方须要非常多时间,而A验证却非常快,仅仅须要看一眼即可了.
A跟B说,你给我解这个10次方程,过程非常麻烦,可是结果easy验证.
A跟B说,你给我把这个游戏玩通关,B须要一定时间,而A验证却非常快.
RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分easy,可是想要对其乘积进行因式分解却极其困难.
···
Pow的应用
今天试做BabyXSS,其中有一段输入会涉及到PoW。
输入的内容经过md5运算后得到加密结果,前六位符合等号右边的条件,根据这些条件写python脚本。
1 | import hashlib |
对于随机字符串admin,我们必须找出一个数n,使得随机字符串拼上这个数n后的md5结果前面6位是da64d0.
即md5(admin+n)的结果符合一定的要求,通过不停的穷举,可以找出这样一个数n。
由于md5用十六进制表示,每一位出现的概率是16。所以要找到符合要求的字符串,平均需要16 16 16 16 16 * 16=16777216次。可以具体规定前面符合要求的字符个数来控制工作者的工作量,当然规定的字符个数越多,工作者的工作量就会越多。
将这段代码的str1作为输入,提交得到
点进去,得到一个url:http://123.207.149.64:23346/usermessages/1555074568-d41d8cd98f00b204e9800998ecf8427e.html , 是个空页面,一脸茫然,还有待破解。。。