Pwnable-blukat

ssh blukat@pwnable.kr -p2222 (pw: guest)

连接上去看看c的源码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
char flag[100];
char password[100];
char* key = "3
G[S/%x1cx1d#0?
ISx0fx1cx1dx18;,4x1bx00x1bp;5x0bx1bx08x45+";
void calc_flag(char* s){
    int i;
    for(i=0; i<strlen(s); i++){
        flag[i] = s[i] ^ key[i];
    }
    printf("%s
", flag);
}
int main(){
    FILE* fp = fopen("/home/blukat/password", "r");
    fgets(password, 100, fp);
    char buf[100];
    printf("guess the password!
");
    fgets(buf, 128, stdin);
    if(!strcmp(password, buf)){
        printf("congrats! here is your flag: ");
        calc_flag(password);
    }
    else{
        printf("wrong guess!
");
        exit(0);
    }
    return 0;
}

比较password和buf,是的话跳出flag,反之则不是

貌似没有什么突破点,看了别人writeup,发现我们可以把password下载到本地,但是没有读取的权限,是不可能下载到本地,于是看看权限

 能拥有读权限的只有root和blukat_pwn  于是推测我们可能在所属组里面

  果不其然,确实是在所属组里面,那么就可以读取password的内容

 表面上说是没有权限,实际上这就是password的内容,有点掩人耳目,当然你如果已经下载到本地,可以直接vi或者cat里面的内容了

Pl3as_DonT_Miss_youR_GrouP_Perm!!

原文地址:https://www.cnblogs.com/gaonuoqi/p/11764736.html