跳转至

2019

[转载]为什么字典中的Key不能是列表

1 Python的字典是如何工作的

​ 在Python中,字典就是一个个的映射,为了实现这个功能,Python必须能够做到,给出一个Key,找到哪一个Value与这个Key对应。如果我们将Key-value键值对存放到一个List中,每当需要的时候,就去遍历这个List,用Key和键值对对应的Key去进行对比。但是这样实现方法,如果数据量很大的时候就变得很低效。他的算法复杂度是O(n),n是存放键值对的数量。

​ 为此Python使用了Hash(哈希)的方法来实现,要求每一个存放到字典中的对象都要实现Hash函数,这个函数可以产生一个唯一的int值,叫做Hash Value(哈希值),通过这个int值,就可以快速的确定对象在字典中的位置。然而,由于Hash碰撞的存在,可能存在两个对象的Hash值是相同的,所以在查找字典的时候,要比较Hash的值,还要比较Value的值。

Redis未授权问题获取Linux系统root权限的攻击方法

今天我自己的一台服务器就这样被挂上了挖矿脚本....

今天就了解一下我的服务器是如何被利用的。

1.在默认情况下,redis会绑定在0.0.0.0:6379,因为自己图方便就把防火墙给关了。这样就导致了redis服务器被暴露在公网上。同时我也了解到,如果没有开启授权的情况下,任意一个用户如果可以访问Redis服务器,那么就会在未授权的情况下访问Redis服务器,同时访问服务器。攻击者在未授权的情况下访问Redis,可以通过Redis的方法将自己的公钥写入到目标服务器的authotrized_keys文件中,进而可以直接登录目标服务器;而且如果Redis是以root用户登录的话,那么可以用此方法直接获取root用户权限。

img