[Dreamhack] file-special-bit Write-up
2025. 4. 2. 13:47ㆍ보안/misc
728x90
ssh chall@[hostname] -p [port]
명령어를 통해 chall의 계정으로 진입해준다.
password를 치라고 나오고, 문제에 나와있는 패스워드를 입력하게 되면 문제로 진입할 수 있다.
홈 디렉터리에서 ls 명령어를 사용하면
chall flag 두 파일이 나오고 flag를 읽으려하면 권한이 없다고 나온다.
chall은 문제에서 코드를 줬으니 코드를 보자.
//Name: chall.c
//Compile: gcc chall.c -o chall -no-pie -fno-stack-protector
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[]){
if(argc == 2){
char filename[10];
char cmd[20];
int ruid = 0;
int euid = 0;
memcpy(filename, argv[1], sizeof(filename));
snprintf(cmd, 19, "cat %s", filename);
printf("Your ruid : \\n");
scanf("%d", &ruid);
printf("Your euid : \\n");
scanf("%d", &euid);
if(ruid == getuid() && euid == geteuid()) {
setreuid(geteuid(), geteuid());
printf("Your ruid : %d Your euid : %d\\n", getuid(), geteuid());
system(cmd);
} else {
printf("No.\\n");
}
}
else {
printf("argument...\\n");
}
return 0;
}
- RUID : 프로세스를 실행한 사용자(Owner)의 UID
- EUID : 실제로 프로세스가 사용하는 권한을 결정하는 ID
문제에서 dream이의 권한으로 flagt.txt를 읽으라고 힌트를 줬으므로
RUID를 chall의 ID, EUID는 dream의 ID로 입력해주면 될 것 같다.
ID를 확인해주면

이므로 파일을 실행시켜서

알맞게 입력해주면 flag를 구할 수 있다.
728x90
'보안 > misc' 카테고리의 다른 글
[Dreamhack] baby-linux Write-up (0) | 2025.04.02 |
---|---|
[DreamHack] 64se64 Write-up (0) | 2024.12.27 |
[DreamHack] Exercise: Welcome-Beginners Write-up (2) | 2024.12.27 |
[DreamHack] dreamhack-tools-cyberchef Write-up (1) | 2024.12.27 |