ethernaut训练笔记
ethernaut训练笔记前言Ethernaut是一个类似于CTF的智能合约平台,集成了不少的智能合约相关的安全问题,这对于安全审计人员来说是一个很不错的学习平台,本篇文章将通过该平台来学习智能合约相关的各种安全问题,由于关卡较多,而且涉及合约的分析、攻击流程的演示所以篇幅较长,经过缩减最终定为两篇文章来分享。平台地址:https://ethernaut.zeppelin.solutions
环境准备
Chrome浏览器
插件——以太坊轻钱包MetaMask(https://metamask.io/)
在MetaMask中调整网络为测试网络,之后给自己的钱包地址充值ETH。
前置知识浏览器控制台在整个Ethernaut平台的练习中我们需要通过Chrome浏览器的控制台来输入一系列的命令实现与合约的交互,在这里我们可以直接在Chrome浏览器中按下F12,之后选择Console模块打开浏览器控制台,并查看相关信息:
具体的交互视情况而定,例如:当控制台中输入”player”时就看到玩家的地址信息(此时需实现Ethernaut与MetaMask的互动):当输入getBlance(play ...
面试算法学习
面试算法学习前言为了应对腾讯的笔试,简单学习一些算法来应对吧,也是好久没有写代码了,一些基本的代码如何用都忘了,简单复习一下
算法题洗牌算法
对52张牌洗牌,要求尽量洗乱,而且原牌不能在原位置上重复
洗牌算法是常见的随机问题:将1-52张扑克牌重新洗牌。
Fisher–Yates随机置乱算法也被称做高纳德置乱算法,通俗说就是生成一个有限集合的随机排列。Fisher-Yates随机置乱算法是无偏的,所以每个排列都是等可能的,当前使用的Fisher-Yates随机置乱算法是相当有效的,需要的时间正比于要随机置乱的数,不需要额为的存储空间开销。
12345678910111213import randomdef shuffle(buf): length = len(buf) print(length) for i in range(length): number = random.randint(i,51); buf[i],buf[number] = buf[number],buf[i]buf=[]for i in range(1,53): ...
零宽度字符水印
零宽度字符水印零宽度字符简介零宽度字符是一些不可见的,不可打印的字符。它们存在于页面中主要用于调整字符的显示格式。
常见的零宽度字符及它们的unicode码和原本用途:
零宽度空格符 (zero-width space) U+200B : 用于较长单词的换行分隔
零宽度非断空格符 (zero-width no-break space) U+FEFF : 用于阻止特定位置的换行分隔
零宽度连字符 (zero-width joiner) U+200D : 用于阿拉伯文与印度语系等文字中,使不会发生连字的字符间产生连字效果
零宽度断字符 (zero-width non-joiner) U+200C : 用于阿拉伯文,德文,印度语系等文字中,阻止会发生连字的字符间的连字效果
左至右符 (left-to-right mark) U+200E : 用于在混合文字方向的多种语言文本中(例:混合左至右书写的英语与右至左书写的希伯来语),规定排版文字书写方向为左至右
右至左符 (right-to-left mark) U+200F : 用于在混合文字方向的多种语言文本中,规定排版文字书写方向为右至左
...
阿里云oss+PicGo搭建自己的图床
title: 阿里云oss+PicGo搭建自己的图床tags: 其他categories: 其他阿里云oss+PicGo搭建自己的图床前言个人博客上的图片有时候会挂掉,于是我就想到自己搭建一个图床来用,发现还挺简单的。
准备
需要有一个云服务器账号就行
下载PicGo
准备PicGo直接去下载对应的setup程序就行,我的是windows的,于是下的是exe。
然后安装即可,有需要的可以改一下安装路径。其他的默认就好了。
阿里云oss搭建什么是oss?
oss其实就是对象存储服务,用于存储各种文件和数据的,特点是便宜和方便。
购买阿里云oss服务
登录阿里云
打开侧边栏的对象存储oss,如下图
对象存储界面选择
开启下图这些就行了,其他的可以不管
关于资源包
如果是个人的博客什么的还有一些访问量不高的网站可以用默认的按量计费,本身也不会多贵,这个是先用后付的。
如果是一些访问量大的网站,一个月好几十个G的流量那种,就需要买资源包了。资源包的购买,看官方说明按需购买即可。
添加用户需要创建一个用户来对图床的上传进行管理
添加用户步骤:点击自己头像,然后选择访问 ...
计划任务
计划任务一、概念计划任务就是按照计划定时的去执行任务
二、crond程序crond程序是linux里负责执行计划任务的程序
(1)使用crontab命令调用crond进程
(2)crond程序–每隔一分钟去检查是否有计划任务要执行.
2、crond进程的启动、重启、停止
(1)service crond start–启动
(2)service crond stop–停止==systemctl stop crond
(3)service crond restart–重启(先关闭后启动)
三、管理计划任务1、编辑计划任务:crontab -e
2、查看计划任务:crontab -l
3、删除计划任务:crontab -r或者将计划任务注释掉
4、计划任务的定时设置:
计划任务的格式:
时间设置的一些特殊表示方法:
(1)*表示任意时间
(2),表示间隔的多个不连续的时间点
(3)/n表示指定间隔的时间频率
(4)~表示连续的时间范围
例如:
(1)0 7 * * *–每日的七点
(2)0 12 */3 * * –每隔三天的12点
(3)30 ...
排序的几种算法
排序的几种算法前言排序算法是将一组数据按照一定的顺序排列的算法。这里列举几种常见的排序算法:
冒泡排序(Bubble Sort)
通过依次比较相邻的两个元素,如果它们的顺序不正确就交换它们,一轮比较下来最大(或最小)的元素就像气泡一样”浮”到了最上面(或最下面),因此称为冒泡排序。
时间复杂度:平均情况和最坏情况均为 O(n^2)。
123456def BUBsort(buf): length = len(buf) for j in range(length): for i in range(length-j-1): if(int(buf[i])>int(buf[i+1])): buf[i],buf[i+1] = buf[i+1],buf[i]
可以发现需要进行两次遍历,时间复杂度就为O(n^2)
选择排序(Selection Sort)
在未排序序列中选择最小(或最大)的元素,将其放置到已排序序列的末尾,直到所有元素均排序完毕。
时间复杂度:平均情况和最坏情况均为 O(n^2)。
1234567 ...
中国网络防火长城简史
中国网络防火长城简史
转自https://github.com/TsingJyujing/blogs/blob/master/spam/gfw-history.md简介计算机的防火墙,和物理意义上的墙并不一样,物理上的墙建立以后,那就既进不来,也出不去了。而计算机的墙,则是可以对两个方向进行控制。
其实我们今天所说的计算机防火墙,大致有两种,一种是对内的,一种是对外的。
传统意义上的防火墙,一般是用来防止外部访问的,当然,你也可以设置禁止访问某些IP或者网站,禁止内部访问。
我们使用计算机的时候,会开放很多端口,比如22,139,3389等等,而作为非开发者的用户,往往用不到这些端口。 再考虑到使用这些端口的程序有的时候是有漏洞的,开放了容易被攻击,所以干脆打开防火墙封闭了就好。 这就好比你日常宅在家,并不需要出门,就把锁孔都堵死来保证安全一样。
而我们今天讨论的主角,主要的功能不是阻止别人进来(入侵),而是阻止你出去的。 你访问不了Google/Youtube/Facebook/LINE/Twitter/。。。的根本原因: 防火长 ...
YAML入门教程
YAML入门教程YAML 是 “YAML Ain’t a Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种标记语言)。
YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。
YAML 的配置文件后缀为 .yml,如:test.yml 。
基本语法
大小写敏感
使用缩进表示层级关系
缩进不允许使用tab,只允许空格
缩进的空格数不重要,只要相同层级的元素左对齐即可
‘#’表示注释
数据类型YAML 支持以下几种数据类型:
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个 ...
Linux用户和用户组管理
Linux用户和用户组管理前言当你需要管理一台容纳多个用户的Linux机器时,比起一些基本的用户管理工具所提供的方法,有时候你需要对这些用户采取更多的用户权限管理方式。特别是当你要管理某些用户的权限时,这个想法尤为重要。
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户和口令后,就能够进入系统和自己的主目录
实现用户账号的管理,要完成的工作主要有如下几个方面:
用户账号的添加,删除与修改
用户口令的管理
用户组的管理
一,Linux系统用户账号的管理用户账号的管工作涉及到用户账号的添加,修改,删除,查询。
添加用户账号就是在系统中创建一个新的账号,然后为新账号分配用户号,用户组,主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。
添加用户账号userad ...
Linux下开启SSH,并且允许root用户登录,允许无密码登录
Linux下开启SSH,并且允许root用户登录,允许无密码登录SSH概述SSH由IETF的网络小组所制定;SSH为建立在应用层基础上的安全协议。SSH是目前较为可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可以弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台-包括HP-UX,Linux,AIX,Solaris,Digital UNIX,Lrix,以及其他平台,都可以运行SSH。
SSH功能传统的网络的服务程序,如:ftp,pop和telnet在本质上都是不安全的,因为他们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易收到“中间人”这种方式对待,所谓中间人的对待方式,就是中间人冒充真正的服务器接受你传送给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据被“中间人”转手做了手脚后,就会出现很严重的问题。通过使用SS ...