[BUUCTF-pwn] pwnable_blukat

还是个远程的题,开启环境后登过去看到blukat,blukat.c,password三个文件,还都是可读的,password应该是密文,.c文件里有密钥,加密方法是异或,看似简单但是完不成.

由于password里有不可见字符,这里用xxd password弄成文本取回来

#password.xxd
00000000: 5561 263c 284d 437d 7e1a 020a 6e64 306e  Ua&<(MC}~...nd0n
00000010: 2e7e 350f 1504 282d 7a15 0801 267f 6c23  .~5...(-z...&.l#
00000020: 1a61 1434 194e 4255 100e 7d0a            .a.4.NBU..}.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
char flag[100];
char password[100];
char* key = "3\rG[S/%\x1c\x1d#0?\rIS\x0f\x1c\x1d\x18;,4\x1b\x00\x1bp;5\x0b\x1b\x08\x45+";
void calc_flag(char* s){
        int i;
        for(i=0; i<strlen(s); i++){
                flag[i] = s[i] ^ key[i];
        }
        printf("%s\n", flag);
}
int main(){
        FILE* fp = fopen("./password", "r");
        fgets(password, 100, fp);
        char buf[100];
        printf("guess the password!\n");
        fgets(buf, 128, stdin);
        if(!strcmp(password, buf)){
                printf("congrats! here is your flag: ");
                calc_flag(password);
        }
        else{
                printf("wrong guess!\n");
                exit(0);
        }
        return 0;
}
#flag{107e7992-7f6c-45b6-bd89-c43c7fd1"'nt!\x1f

解密方法

from pwn import *

key = b"3\rG[S/%\x1c\x1d#0?\rIS\x0f\x1c\x1d\x18;,4\x1b\x00\x1bp;5\x0b\x1b\x08\x45+\x00"

passwd = open('password', 'rb').read()
print(len(key), len(passwd))

flag = ''
for i in range(len(passwd)):
    flag+= chr(passwd[i]^key[i])

print(flag)

可是问题来了,BUU上的flag是uuid 总行42位,而key是33位,不够长。后来查了下网上,都是用的原版,原版flag没那么长。 提示是flag有点长,别问我,没办法,剩下的爆破flag就没意思了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值