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!!