2021cybrics re wp
@TOC
Listing打开是sse指令集
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758BITS 64global checksection .textcheck: mov rbp, rsp sub rsp, 0x100 VMOVDQA ymm0, [rdi] and rsp, 0xffffffffffffff00 mov rax, 0xfeca50051345b0b0 push rax push rax push rax push rax VMOVDQA ymm1, [rsp] VPXOR ymm2, ymm1, ymm0 mov rax, 0x0100030205040706 push rax mov rax, 0x09080b0a0c0d0f0e push rax mov rax, 0x1110131215141716 ...
2021GKCTF re wp
@TOC
QQQQT点击运行
发现是一个窗口 如果输入正确的flag会显示正确猜测文件里包含这flag用CE打开 查看内存
发现flag的上面是字符串 和base58的码表 用工具在线解密即可
CrashIda7.5打开后发现是go语言 用脚本还原符号表不成功 用ida7.6打开发现函数名可以查看 定位到加密函数
Main_check检测成功即可拿到flag 进入细看
大概意思就是把flag分成四部分 分别进行加密处理 最后与四个字符串比较第一个加密:3des
这里可以找见他的key 和密钥 用在线工具还原
拿到第一部分的flag第二部分:sha256 分析可知长度为四位 可以爆破
12345678910import hashlibhash="6e2b55c78937d63490b4b26ab3ac3cb54df4c5ca7d60012c13d2d1234a732b74"for i in range(90000000): pwd1=hex(i) pwd1=pwd1[2:] h1=hashlib.sha256(pwd1.encode( ...
2021陕西省省赛 re wp
@TOC
Give me num打开题目后只有一个nc地址尝试连接给了一个图片出来 提示信息是lcg百度一下利用多次nc得出来的数可以破解 a c m的值
贴出官方的python脚本
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677from pwn import *import requestsimport gmpy2from bs4 import BeautifulSoup# LCG solverdef lcg(m, a, c, x=0): return (a * x + c) % mdef rlcg(m, a, c, x=0): ainv = gmpy2.invert(a, m) return ainv * (x - c) % mdef solve_a(lcg0, lcg1, lcg2, m): a = (lcg2 - ...
2021 ciscn re wp
@TOC
逆向题质量太高了,本菜鸡在比赛只做出来两个题。 其他的题会在赛后继续复现出来。持续更新中….
glassjeb打开主函数发现调用了native层
ida打开
输入长度39位第一个函数跟进发现调用了rc4第二个函数用v7对flag加密(数组移位+异或)第三个直接对flag加密(三位一组进行加密处理+异或)
大体思路:根据已有的字符串,首先逆掉第三个函数 得到用rc4数组加密后的然后求出rc4的数组 最后在第二个函数里进行异或拿到flag
(变量名用的有点乱)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859#include<stdio.h>#include<string.h>int a[100]={163, 26, 227, 105, 47, 187, 26, 132, 101, 194, 173, 173, 158, 150, 5, 2, 31, 142 ...
2021安网杯 re wp
hit_re发现是一个迷宫题我们把地图考出来,地图一行为11个数这个地图十分简单,重复下下右10次即可走出地图。但是题目要求我们走50步,那应该怎么做呢?结合上面的往右走10步,我们只能在上下做文章。上上下下凑够步数,所以在每一个小部分里(下下右)要不直接走出,走3步,要么来回往返走7步。如果往返的话,只能往返5次(35+75=50)才能凑够50步往返的路径有哪些呢,写一个dfs函数求出
123456789101112131415161718192021222324252627#include<stdio.h>char a[100];void dfs(int n,int w){ if(w<1||w>3){ return ; } if(n==6){ if(w==3){ puts(a); } return; } a[n]='w'; dfs(n+1,w-1); a[n]='s'; dfs(n+1,w+1); }int main()& ...