와 벌써 30번째 문제네요...한달! 시간 정말 빠르네요!!
문제 풀어볼게요!!
SSH란 Secure SHell의 약자로써 네트워크상의 다른 컴퓨터에 로그인하여 명령을 실행하고 정보를 보고 받을수 있도록 해 주는 통신 프로토콜
우분투 가보자고~
소스코드입니다
//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;
}
ssh chall@host3.dreamhack.games -p 11162로 서버 접속후
ls로 확인하면
chall flag가 있다
./chall로 실행하면
./chall 명령어는 현재 작업 디렉토리에서 chall이라는 실행 파일을 실행하라는 의미입니다. 각 부분의 설명은 다음과 같습니다:
argument가 뜬다..,.
당신이 제공한 코드에서 "argument..."라는 출력은 프로그램이 인수의 수가 올바르지 않음을 나타내는 메시지입니다. 즉, 프로그램은 하나의 인수를 기대하고 있지만 사용자가 올바른 수의 인수를 제공하지 않았음을 의미합니다.
./chall flag로 실행하면
your ruid:
your euid가 뜬다
id를 입력하면
uid=1000(chall) gid=1001(chall) groups=1000(chall)이 뜬다
ruid = 1000
euid를 알려면
id dream을 입력하면 된다
uid=2123(dream) gid=1001(dream) groups=1001(dream)
euid=2123
그러면 flag가 나온다.
'Dreamhack > Dreamhack Wargame (Challenge)' 카테고리의 다른 글
[32] IT 비전공자 [dreamhack] whatsdifferent문제 풀기 (4) | 2024.10.11 |
---|---|
[31] IT 비전공자 [dreamhack] addition-quiz문제 풀기 (1) | 2024.10.10 |
[29] IT 비전공자 [dreamhack] littlevsbig (misc)문제 풀기 (8) | 2024.10.08 |
[28] IT 비전공자 [dreamhack] bof문제 풀기 (2) | 2024.10.07 |
[27] IT 비전공자 [dreamhack] ROT128문제 풀기 (3) | 2024.10.06 |