聊聊52pojie的春节红包后两道题
春节在家,正好看到了这个活动,好久没有打CTF了,就来试试水。
倒数第二道题——Go程序的Crackme
这类分析资料少之又少,我也是第一次做分析golang语言编写的程序,只能先用IDA Pro试试水。
首先明确一点就是Go语言程序的入口函数叫做 main_main,这个程序初步[……]
携书如历三千世, 无书唯度一平生。
春节在家,正好看到了这个活动,好久没有打CTF了,就来试试水。
这类分析资料少之又少,我也是第一次做分析golang语言编写的程序,只能先用IDA Pro试试水。
首先明确一点就是Go语言程序的入口函数叫做 main_main,这个程序初步[……]
浮浮沉沉又是一年,再次到达人生的十字路口,面临抉择。处理了一下快到期的虚拟主机,正式迁移到了VPS上面去,博客应该在今年不会有太大的动作了,也是时候潜心的看一些资料了。一年时间不多,也飞快,感觉远不及之前的学校的所学与所得,甚是悲哀。也该考研了,也该慢慢的看看资料提升一下自我了。闭关、学习。[……]
差点忘了一道题……gakki小姐姐的……当时一直说crc错误,事后晚上和大表哥们吃饭的时候,我才知道原来是改了图片高度和宽度……导致CRC出的问题……真神奇。
很明显下面没有显示全。010Edito人走起。
改一下高度
[……]
时隔一年,我又碰到这个题了,后悔没当时在做阿里CTF的时候没有记录一份……好久没打比赛,当时看到题最后都懵了,真尴尬。
熟悉的界面,也就改了标题貌似。看一下反编译代码,也就两个关键点
一个是is算法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public static boolean is2(int n) { if (n <= 3) { if (n > 1) { return true; } return false; } else if (n % 2 == 0 || n % 3 == 0) { return false; } else { int i = 5; while (i * i <= n) { if (n % i == 0 || n % (i + 2) == 0) { return false; } i += 6; } return true; } } |
 [……]
好不容易等到了第六届大学生信息安全大赛,打了也有四五届了吧。这次靶机难得遇到一道pwn题,好气的是比赛前晚上竟然系统崩了,万幸的是最后又复活了。第二天打比赛的时候,才发现我Kali虚拟机上的pwntool完全崩掉了。哎……
今晚正好有点时间,正好做了一下。
下下来题显示是xxx.key文[……]
最近使用elasticsearch做搜索引擎索引的时候,需要多次修改索引,但是已经存在的索引无法更改,以为只能重建索引。突然发现使用ignore_conflicts=true参数可以强制更改。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ curl -X PUT 'http://localhost:9200/thegame/weapons/_mapping?ignore_conflicts=true' -d \ '{ "weapons": { "properties": { "name": { "type": "string", "analyzer": "full_name" }, "description": { "type": "string" }, "category": { "type": "string" } } } }' |
在Go语言当中,好多功能都使用了结构体标签。主要应用在encoding/json和encoding/xml之中。那么我们先用Json的使用做一个例子。首先创建一个结构体。
1 2 3 4 5 6 7 8 |
type User struct { Id int `json:"id"` Name string `json:"name"` Bio string `json:"about,omitempty"` Active bool `json:"active"` Admin bool `json:"-"` CreatedAt time.Time `json:"created_at"` } |
对于结构体的标签就是紧跟成员定义后,类型后面的那串字符串,[……]
最近在参与一个比赛,模拟了实验环境的攻击脚本。就是让遍历字典,去破译mssql数据库的密码,当时想了许久。其实思路很简单,就是利用简单的数据库的连接就能判断密码是否正确。对于mssql而言,每个用户始终都存在这个tempdb,到时候连接的时候直接连接这个库就行。利用python实现了一下。
[……]
忘了什么时候保存的更新脚本了,蛮不错的,只要pip保持最新版本,所有库都能更新的了,不用手工的一个一个的更新了,代码出处忘了……如果知道的麻烦提醒一下。
1 2 3 4 5 |
import pip from subprocess import call for dist in pip.get_installed_distributions(): call("pip install --upgrade " + dist.project_name, shell=True) |
在此记录一下,代码很短。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
压缩源文件数据区: 50 4B 03 04:这是头文件标记(0x04034b50) 14 00:解压文件所需 pkware 版本 00 00:全局方式位标记(有无加密) 08 00:压缩方式 5A 7E:最后修改文件时间 F7 46:最后修改文件日期 16 B5 80 14:CRC-32校验(1480B516) 19 00 00 00:压缩后尺寸(25) 17 00 00 00:未压缩尺寸(23) 07 00:文件名长度 00 00:扩展记录长度 6B65792E7478740BCECC750E71ABCE48CDC9C95728CECC2DC849AD284DAD0500 压缩源文件目录区: 50 4B 01 02:目录中文件文件头标记(0x02014b50) 3F 00:压缩使用的 pkware 版本 14 00:解压文件所需 pkware 版本 00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了) 08 00:压缩方式 5A 7E:最后修改文件时间 F7 46:最后修改文件日期 16 B5 80 14:CRC-32校验(1480B516) 19 00 00 00:压缩后尺寸(25) 17 00 00 00:未压缩尺寸(23) 07 00:文件名长度 24 00:扩展字段长度 00 00:文件注释长度 00 00:磁盘开始号 00 00:内部文件属性 20 00 00 00:外部文件属性 00 00 00 00:局部头部偏移量 6B65792E7478740A00200000000000010018006558F04A1CC5D001BDEBDD3B1CC5D001BDEBDD3B1CC5D001 压缩源文件目录结束标志: 50 4B 05 06:目录结束标记 00 00:当前磁盘编号 00 00:目录区开始磁盘编号 01 00:本磁盘上纪录总数 01 00:目录区中纪录总数 59 00 00 00:目录区尺寸大小 3E 00 00 00:目录区对第一张磁盘的偏移量 00 00:ZIP 文件注释长度 |