문제 페이지에 들어가면 다음과 같은 화면이 나오고 문제 힌트를 읽어보면 바이너리를 볼수있는 방법이 필요하다고 한다. 

문제에 대한 추가적인 정보를 더 얻기 위해 robots.txt 파일을 확인해보니 /secret 라는 디렉토리가 있음을 확인할 수 있었다. /secret 디렉토리를 확인해보니 다음과 같은 페이지를 확인할 수 있었다.

 

이 페이지를 보아 directory traversal 공격을 할 수 있을 것 같았다. 

Burp Suite로 request를 잡아 /etc/passwd 파일을 확인할 수 있었다.

바이너리와 관련된 힌트가 주어졌기 때문에 현제 프로세스에서 실행중인 바이너리 파일을 볼수 있는 /proc/self/exe 경로를 확인해 보니 elf 파일을 확인할 수있었고, 파일 안의 플래그도 확인할 수 있었다.

 

flag : pbctf{n0t_re4lly_apache_ap0che!}

'Security & Hacking > CTF Write Up' 카테고리의 다른 글

[Plaid CTF 2013] ropasaurusrex  (0) 2021.08.17
[CodeGate 2017] babypwn  (0) 2021.08.10
[2020riceteacatpanda]  (0) 2020.01.26
[Insomni'hack teaser 2020][Web] LowDeep  (0) 2020.01.20

continue 키워드는 반복문 안에 들어가며 cotinue 문장을 실행하게 되면 이 문장의 위치와 상관 없이 반복문의 조건 검사 위치로 이동한다. 

#include <stdio.h>

int main(void)
{
    for(int i = 0; i < 10; i++)
    {
        printf("%d\n",i);
        continue;
        printf("continue test\n");
    }
}

위 코드같은 경우 continue가 실행되면 반복 조건 검사 위치로 다시 돌아가기 때문에 continue test 라는 문자열은 한번도 출력되지 않는다. 

'Language > C, C++' 카테고리의 다른 글

[C] goto  (0) 2020.12.08
[C] switch  (0) 2020.12.08
[C] break  (0) 2020.12.05
[C] 조건 연산자(삼항 연산자)  (0) 2020.12.05
[C] 조건적 실행  (0) 2020.12.05

break는 반복문을 빠져 나올때 사용하는 키워드이다. 

다음 코드의 경우 무한 루프를 하는 반복문이지만 조건문에 break가 있기 때문에 조건을 만족시킨다면 반복문을 빠져 나올 수 있다. 1+2+3+...+n의 결과가 최초로 5000을 넘길때 n의 값을 구하는 코드이다. 

#include <stdio.h>

int main(void)
{
    int sum=0, num=0;
    
    while (1)
    {
        sum += num;
        if(sum > 5000)
            break;
        num++;
    }

    printf("sum = %d\nnum = %d\n", sum,num);
    return 0;
}

'Language > C, C++' 카테고리의 다른 글

[C] switch  (0) 2020.12.08
[C] continue  (0) 2020.12.05
[C] 조건 연산자(삼항 연산자)  (0) 2020.12.05
[C] 조건적 실행  (0) 2020.12.05
[C] for  (0) 2020.11.29

+ Recent posts