
CTF
酸酸菜鱼
这个作者很懒,什么都没留下…
展开
-
极客巅峰2020 virus
迷宫题题目逻辑:1.以4个 - 分割了5段内容。xxx-xxx-xxx-xxx-xxx 第一段为进入迷宫的顺序,之后的段为迷宫的行走路线2.根据题目的内容,可以判断出进入迷宫的顺序。直接确定顺序和flag题目详情如下int __cdecl main(int argc, const char **argv, const char **envp){ int v3; // eax _DWORD v5[10]; // [esp+14h] [ebp-4Ch] _DWORD v.原创 2021-01-16 18:40:47 · 300 阅读 · 0 评论 -
Reversing.kr CSharp
.net程序原创 2020-12-16 01:38:27 · 193 阅读 · 0 评论 -
Angr_CTF总结
文章目录前言一、基本模板1.以地址的形式寻找2.以字节对象的形式寻找二、绕过scanf1.寄存器符号化2.栈符号化3.内存符号化3.1 固定内存地址符号化3.2 动态内存符号化scanf绕过总结hookhook单一程序 使用地址hookhook函数名hook scanfhook 静态库hook 外部文件导入动态库hook总结路径爆炸问题hook约束条件:使用z3求解结果veritesting文件模拟PWN任意读任意写任意跳转总结前言根据大佬们的angr教程的学习,作个人总结参考内容1:https..原创 2020-11-27 16:48:08 · 472 阅读 · 0 评论 -
2020网鼎杯 青龙组 逆向signal
signin虚拟机题目1.用angr解决In [1]: import angr In [2]: p = angr.Project("./signal.exe") In [3]: init_state = p.factory.entry_state()原创 2020-11-25 16:02:22 · 686 阅读 · 0 评论 -
docker个人使用记录
ps:看不懂别人的字 用自己的文字记一下镜像操作查看所有镜像docker images导入镜像docker pull 镜像名称运行imagesdocker run -it xxx(docker images下显示的全名)该运行方式不能保存在docker内的做的修改删除imagesdocker rmi image_id容器操作查看容器进程docker ps -a打开容器docker start container_id镜像是在容器里的。可以开多个docker dock原创 2020-11-15 16:29:25 · 201 阅读 · 0 评论 -
z3个人使用
# 步骤: 1.定位某类型未知数 2.创建求解器s = Solver() 3.添加约束条件 4.检查是否解决 check() 5.创建解决问题后的模型对象 6.输出值# 模板 如下:from z3 import *x = Int('x') # 定义 'x' 为数据类型为int的未知数# int 是 数据类型 可换 如:y = BitVec('y',32) # BitVecs-末端有s,则定义多.原创 2020-11-10 09:49:43 · 1097 阅读 · 1 评论 -
GACTF easyRe
1111111111原创 2020-11-02 17:49:28 · 632 阅读 · 5 评论 -
vm类型题目(3) hagem-week4-easy
111111原创 2020-10-12 17:32:19 · 247 阅读 · 0 评论 -
XCTF easyre-153
wp很多了。说几个要注意的点:注意不要总是直接F5,若不直接F5,看汇编代码 会发现,直接patch一下,在上边填上对应的子进程后,运行直接出结果 也可以直接写脚本解决。 string = "69800876143568214356928753"v3 = 2 * ord(string[1])v4 = ord(string[4]) + ord(string[5])v5 = ord(string[8]) + ord(string[9])v6 = 2 * ord(string[12])v7原创 2020-10-10 16:18:07 · 329 阅读 · 0 评论 -
vm类型题目(2) WxyVM2
感觉还是缺点vm的味道。应该是题目简单的原因吧。1.首先题目进去f5的话会出现function too long的问题。修改ida中的cfg文件夹下的hexrays.cfg中的MAX_FUNCSIZE = 1024(64改为1024)2.之后f5,等待会。会看到大量的代码3.可以直接把代码复制下来。用脚本处理这代码也好,手工处理也罢(现在的文本编辑器功能很齐全了)。把数据处理只保存byte的那部分。其中有u -- ++ 这些内容的修整。还有16进制的问...原创 2020-10-07 02:00:45 · 233 阅读 · 0 评论 -
在CTF中的小端序与大端序
大,人类为大。所以这是符合人的思维的。即高地址放数据低位eg:地址从低到高的表示方式:[12][34]12是低地址,但是为了人方便看,把数据的高位放在了低地址,这样子看起来的顺序还是 1234。方便看。小端序:是为了计算机效率的。即高地址放数据高位。高高低低。之前我走进了一个误区:将数组也当作字节序。其实不然。这里感谢师傅的提醒。eg:设置int data = 0x1234在这里,会受到字节序的影响,所以在CTF中,在调试工具中看到该数据,可能会因为字节序的不同,而要把数据进行一个位置的调整。原创 2020-10-03 21:40:02 · 688 阅读 · 0 评论 -
极客巅峰 fu!k python
pyc文件,反编译后出python代码难点在于python代码不太好读 各种嵌套。换行整理了一下,发现是个数独。在线解数独flag{145327698839654127672918543496185372218473956753296481367542819984761235521839764}原创 2020-09-27 09:39:37 · 177 阅读 · 0 评论 -
vm类型题目(1) WxyVM1
先简单说一下 vm逆向题。vm是什么?原本的指令用另一种方式实现。比如我看到哪个特征,我就去执行那部分的内容,而这部分的内容会对应一条指令。大致便是这样的意思。无限套娃。先讲一道相对简单的题目 WxyVM1根据 switch case到的值:选择运算方式(即对应一条指令) 进行运算。...原创 2020-09-24 16:16:54 · 340 阅读 · 0 评论 -
堆栈平衡问题
看ebp 跟esp 的值 这个值在末端时要是末端要修改的值-这个值==我们要填进去的值。末端要修改的值的前边一个地方进行修改 快捷键是alt+k。ps:这是给自己看的,写的粗糙。有问题可以问我。...原创 2020-09-16 13:05:17 · 210 阅读 · 0 评论 -
CTF 天津垓
运行可知刚开始的显示以及输入错误后的提示ida打开所以是前边的v25-v30放在一起1个int64是8个字节,1个char是1个字节,因此1个int64可转为8个char在v25右键->set lvar type改为修改后的结果已经显示出了错误时的报错了。同理,有一些其他地方也是字符串,只是被ida识别错误了,若是不确定是否被识别错误了,可以查看char形式,会发现是一堆字符串。同理,修改多处修改好后 根据后边的代码逻辑可知:我们应该输.原创 2020-09-14 15:46:56 · 424 阅读 · 0 评论 -
GACTF2020 checkin
题目虽然是签到题。但是我刚开始不知道该如何入手。查看字符串,没有发现有用的内容。 有人会习惯性查看import table 应该学习。 除了有详细的地方需要动态调试之外,当静态看不出什么时,应该先动态调试起来。 动态调试时f8开始走,跑飞时f7进入。抽丝剥茧。不是无脑f8 f7。要注意使用的api 函数等等。 GetCommandLineA :检索当前进程的命令行字符串(即获取内容的api) CreateProcessA:创建新进程在我OD载入并运行时出现了这情况。在ocr88A.tmp\s原创 2020-09-08 15:52:11 · 297 阅读 · 0 评论 -
GACTF2020 WannaUp
要点:任何求余的操作都指明了一个点:限制了一个范围,从而限制了用到它的地方的范围这道题的计算由 某一处的异或爆破+循环移位操作+异或运算 组成。定位关键代码的几种方法1.ida查找字符串,发现flag.bin和flag.txt。再使用x查找到了函数sub_4022802.ida查看import表 发现如CryptDecryptGetWindowTextA 这类API,同样能定位到函数sub_4022803.运行程序,一个gui界面,动态调试软件下断获取信息的api(r如GetDl..原创 2020-09-08 11:23:59 · 363 阅读 · 1 评论 -
python 实现汇编指令循环左移和循环右移
ROL(Rotation Left) ROR(Rotation Right)def ROR(i,index): tmp = bin(i)[2:].rjust(8,"0") """ >>>bin(10) '0b1010' 所以从[2:]开始 rjust(width[,fillchar=None]) width -- 指定字符串长度,要在Unicode字符串长度范围内。 fillchar -- 可选参数...原创 2020-09-07 12:36:35 · 2485 阅读 · 0 评论 -
xctf crazy
题目具体信息过多 太长 眼睛都花了 先查找明白了,确定了后记得备份一个。然后写注释重命名。 贴个官方wp题目难度不大就是费眼睛。只在calculate那个函数有计算ans = '327a6c4304ad5938eaf0efb6cc3e53dc'def exploit(s): return ''.join(map(chr, list(map(lambda x:((((ord(x)-11)^0x13)-23)^0x50), list(s)))))if __name__ == '__ma原创 2020-09-06 17:31:27 · 435 阅读 · 0 评论 -
xctf re1-100
无fuck可说原创 2020-09-06 16:48:31 · 220 阅读 · 0 评论 -
XCTF Shuffle
题目的字符串在运行前是按顺序排好的 题目会进行随机取值操作,所以每次运行 都会有不同结果 把所有字符串拼接一下,就行了 SECCON{Welcome to the SECCON 2014 CTF!}原创 2020-09-06 16:33:01 · 235 阅读 · 0 评论 -
xctf key
单看代码看不明白。动态调试了一波。答案都在注释里了。程序计算出一个值,与文件里的值比较,相同即可unsigned int sub_401100(){ signed int v0; // esi signed int v1; // esi unsigned int v2; // edi void **v3; // ebx void **v4; // eax int v5; // ecx int v6; // ST04_4 int v7; // ST08_4 int原创 2020-09-06 16:12:10 · 381 阅读 · 0 评论 -
ctf mov混淆
首先贴一篇文章 https://blog.youkuaiyun.com/qq_33438733/article/details/79860304作者跟我所要表达的是一致的。mov混淆的解决方式:简单的,会在某个寄存器中出现,全局搜索该寄存器后可以得出结果或者可以使用动态调试出结果难的,需要爆破使用工具 https://github.com/kirschju/demovfuscator计划写一篇mov混淆的文章。深度些可以看代码,具体的。包括简单的 难的 使用工具的 使用动态调试的。感觉挺费事的,因为不知原创 2020-09-03 10:21:46 · 639 阅读 · 0 评论 -
xctf srm-50
简单题。不多说原创 2020-08-31 15:56:17 · 105 阅读 · 0 评论 -
xctf dmd-50(后续补充md5相关内容)
题目本身很简单:对输入进行md5加密。获得的值与780438d5b6e29db0898bc4f0225935c0 比较。所以解密就行了。md5解密网址:https://www.somd5.com/哈希算法原创 2020-08-31 14:49:00 · 377 阅读 · 0 评论 -
XCTF hackme(爆破不成功)
1111原创 2020-08-31 12:00:11 · 242 阅读 · 0 评论 -
easyRE1
简单 不多说原创 2020-08-25 19:44:55 · 439 阅读 · 0 评论 -
强网杯强网先锋 侧防writeup
"""正向思路: 1.输入进行异或计算 input[v4] = (input[v4] ^ byte_55F2B6F4A010[(unsigned int)v4 % 7]) + 65; 2.调换顺序:每4个从第4个往回存,调整存放位置。向左移动,第1个到第2个的位置,第4个到第1个的位置。 3.作比较。"""# 直接手动修改位置l2 = [ord(c) for c in r"x|dLUweTIvN\CBOhqDNLW}IfFZCmiyxt\PWOebD^"]for i .原创 2020-08-25 17:21:09 · 287 阅读 · 0 评论 -
XCTF IgniteMe
1.通過搜索字符串,確定函數sub_4011C0是關鍵函數,再者裏邊有個小的計算的函數sub_4013C0貼上代碼和相應的注釋及修改bool __cdecl sub_4011C0(char *input){ size_t v2; // eax signed int v3; // [esp+50h] [ebp-B0h] char v4[32]; // [esp+54h] [ebp-ACh] int v5; // [esp+74h] [ebp-8Ch] int v6; // [e原创 2020-08-15 22:35:52 · 239 阅读 · 0 评论 -
WMCTF2020 easy_re
11原创 2020-08-10 12:01:33 · 645 阅读 · 0 评论 -
XCTF BABYRE
用exeinfo查出是个elf文件,把后缀去了丢linux系统里 看汇编代码和F5(在judge函数里) 直接写脚本 运行至运算结束部分,直接查看寄存器。"""正向思路: 1.判断长度 2.逐位与i进行异或运算逆向思路: 1.逐位异或回去"""str_list =[0x66, 0x6D, 0x63, 0x64, 0x7F, 0x6B, 0x37, 0x64, 0x3B, 0x56, 0x60, 0x3B, 0x6E, 0x70]flag = list.原创 2020-08-04 18:46:53 · 391 阅读 · 0 评论 -
XCTF EASYHOOK
使用动态调试的方式发现在哪里进行加密,得出加密函数sub_401000。 有个this_is_not_flag的幌子 算法函数在sub_401000中"""正向思路:1.对输入的末位计算2.i%2为奇数时: (input[i]-i)^i i%2为偶数时: (input[i+2])^i逆向思路1.求出末位2.反过来求flag[i]和flag[i+2]"""str_list = [0x61, 0x6A, 0x79, 0x67, 0x6B, 0x46, 0x6.原创 2020-08-03 17:16:35 · 464 阅读 · 0 评论 -
XCTF EasyRE
直接看ida和代码str_list = [0x78,0x49,0x72,0x43,0x6A,0x7E,0x3C,0x72,0x7C,0x32,0x74,0x57,0x73,0x76,0x33, 0x50,0x74,0x49,0x7F,0x7A,0x6E,0x64,0x6B,0x61]flag_list = []# print(len(str_list))"""正向:1.判断长度是否为24 2.对输入的每个字符串从最后一位开始往前进行+1,^0x6 3.与上边的字符串原创 2020-07-31 18:15:07 · 773 阅读 · 0 评论 -
XCTF srm-50
打开文件:需要邮箱地址和序列号。ida打开文件在DialogFunc函数中有相应的内容F5后的结果由此可知:1.邮箱格式 2.比较长度是否为0x10 3.固定的字符串比较所以是:随意的邮箱 + CZ9dmq4c8g9G7bAX...原创 2020-07-31 16:31:13 · 348 阅读 · 0 评论 -
XCTF Windows_Reverse2
1.查壳,脱壳。 壳:aspack 可以手工脱壳或者用工具1.取值范围和长度的判断(如图)2.sub_401240:可以通过减去的值判断出:最后的值的取值范围是0-15,所以判定为转换为16进制3.sub_401240里的sub_401000函数:base64的加解密的魔改所以,程序的正向逻辑是:输入,判断长度是否为偶数,是否在'0'->'9' 'A'->'F'之间 在sub_401240转换为16进制 在sub_401000里进行base64魔改加密,最终结果为...原创 2020-07-24 18:30:38 · 548 阅读 · 0 评论 -
angr不能运行某python文件的原因
python运行时的忌讳之一:python文件不要跟标准库重名。这也是为何显示module'angr' has no attribute 'Project'的原因某佬是神。思考:不要跟标准库重名。因为python里的库也是以py为后缀,且会先执行标准库,所以有个叫signal.py的库,就会执行他。然后你就不知所云地以为是操作出了问题。结果是python执行的不是你编写的代码,而是标准库。 一些基本原则的东西,应该要深入思考,编写代码规范,注意的点。往往是看过忘记,随意取名。这是导致.原创 2020-07-20 20:25:00 · 660 阅读 · 0 评论 -
XCTF Mysterious
受惯性思维影响原创 2020-07-19 23:51:39 · 375 阅读 · 0 评论 -
CRC算法python简单实现
import copyimport zlib# https://github.com/Michaelangel007/crc32def crc8(): test_crc8 = 0x11 # 数据 poly_crc8 = 0x11d # 多项式 for bit in range(8): if (test_crc8 & 0x80) != 0: # 判断首位是否为1 test_crc8 <<= 1 .原创 2020-07-16 12:35:00 · 3399 阅读 · 0 评论 -
SCTF2020 signin writeup
1.丢进ida,查看字符串。发现带有python相关字眼,且是pyinstaller打包的。2.用pyinstxtractor将exe编译回pyc3.使用工具uncompyle6反编译pyc。由于是python3.8写的,所以存在几个情况1.在python3.8环境下编译,可以直接打开。 2.缺乏python3.8环境,打不开。winhex添加pyc头部magic number,换成3.8的。经师傅提醒,可以查看同文件夹下的pyc文件,参考并修改。(可留多个版本的pyc文件,作为参考)原创 2020-07-09 13:05:19 · 674 阅读 · 0 评论 -
python struct在CTF中的使用
在CTF中,由于IDA反编译出来的结果主要以C语言的语法呈现(可换成其他语言),这会涉及int64之类的数据类型的说明,而求解flag通常使用的是python,这里边涉及到了对字节的转换。如何将C语言的字节用python表示?便可以使用该库,进行直接的转换。...原创 2020-07-09 10:56:37 · 333 阅读 · 0 评论