level2/"hacker or cracker"(id/pw)를 입력 후, 로그인하여 ls 명령어를 입력하면 hint 파일이 보인다.

hint의 내용을 확인해보니 "텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데..."라고 적혀있다.



우선 level1에서 언급했던 find 명령어를 이용해 소유자가 level3이면서 setuid가 걸려있는 파일을 찾는다.

/usr/bin 경로에 editor라는 파일이 눈에 띈다.



editor 파일을 열어보면 vim(vi) 에디터 화면이 출력된다.



vim(vi) 에디터는 입력, 편집, 명령 등의 모드가 있어 각 모드에 따라 다른 동작을 한다.

에디터에 대한 자세힌 내용은 아래 링크의 위키백과를 참고하기 바란다.

https://ko.wikipedia.org/wiki/Vi


에디터의 실행 초기에는 명령 모드이다. 

명령 모드 상태에서 shell 또는 sh를 입력하게 되면 shell로 빠져나오게 되고, id를 입력해보면

uid가 level3인 것을 확인할 수 있다.



마지막으로 my-pass 명령어를 입력하면 level3계정의 비밀번호를 알 수 있다.





'wargame 풀이 > [F.T.Z]' 카테고리의 다른 글

[F.T.Z] level1 문제 풀이  (0) 2018.11.05

WRITTEN BY
CIP_Pooh

,

이번 시간에는 hackerschool에서 운영하는 F.T.Z 문제 중 level1 문제 풀이를 적어보고자 합니다.

앞으로 문제 풀이를 적는 데 있어서 제 개인적으로 고민하고 풀이를 작성한 것이라

다소 부족한 부분이 있을 수 있습니다. 언제든 지적 바랍니다~ :)



level1/level1(id/pw)를 입력 후, 로그인을 하여 ls 명령어를 입력하면 hint 라는 파일이 보인다.

cat 명령어를 통해 hint의 내용을 확인해보니 "level2 권한에 setuid가 걸린 파일을 찾는다"라고 적혀있다.



파일의 소유자가 level2이면서, setuid가 걸려 있는 파일을 찾기 위한 명령어는 다음과 같다.


 find / -user level2 -perm -4000 2> /dev/null


위 명령어를 옵션별로 설명하면 다음과 같다.


 -user  [uname] : 특정 사용자의 소유권인 파일 또는 디렉터리 검색 시 사용

 -perm [mode] : 특정 퍼미션 값으로 설정된 파일 또는 디렉터리 검색 시 사용

 -2> /dev/null : 표준에러를 /dev/null로 리다이렉션 시켜 출력되지 않음


앞서 설명한 find 명령어를 통해 검색하면 bin 디렉터리에 "ExecuteMe"라는 파일이 눈에 띈다.

ls -al 명령어를 통해 확인해보니, 소유자가 level2이면서 setuid권한이 걸려 있는 것을 확인할 수 있었다.



찾은 ExecuteMe 파일을 실행시켜보도록 하자.



ExecuteMe를 실행하니 원하는 명령어 한 가지를 실행시켜 주겠다고 한다.

my-pass를 통해 바로 패스워드를 알아내고 싶지만, 사용이 불가능하므로, bash를 입력하여 쉘을 획득한다.

level2로 권한 상승이 되었는지 확인하기 위해, id를 입력하니 uid가 level2로 바뀐 것을 확인할 수 있다.



마지막으로 level2 패스워드를 알아내기 위해 다시 ExecuteMe 파일을 실행시키고, 쉘을 획득한 다음 

"my-pass" 명령어를 입력하면 비밀번호가 출력된다.





'wargame 풀이 > [F.T.Z]' 카테고리의 다른 글

[F.T.Z] level2 문제 풀이  (0) 2018.11.09

WRITTEN BY
CIP_Pooh

,

본 글은 SecurityPlus와 키콤백신 오픈소스 프로젝트 참여자 분들과 진행한 내용을 정리한 내용입니다.

 

키콤백신 가이드.pdf

 


WRITTEN BY
CIP_Pooh

,

const int * ptr  = #

                                             >>>>>>>>  const int * const ptr = #

int * const ptr = # 


위와 같이 두 가지 선언을 동시에 할 수 있다.


WRITTEN BY
CIP_Pooh

,
1
2
3
4
5
6
int main(void)
{
    int num;
    scanf("%d" , &num);
 
}



scanf 함수 내에서 외부에 선언된 변수 num에 접근 하기 위해서는 num의 주소 값을 


알아야 한다. 그래서 scanf 함수는 변수의 주소 값을 요구한다.


1
2
3
4
5
6
int main(void)
{
    char str[10];
    scanf("%s" , str);
 
}



위 코드와 같이 배열 이름 str앞에 & 연산자를 붙이지 않는 이유는


str은 배열의 이름이고 그 자체가 주소 값이기 때문에 & 연산자를 붙이지 않는다.


str을 전달함은 scanf 함수 내부로 배열 str 주소 값을 전달하는 것이다.


WRITTEN BY
CIP_Pooh

,

int * param = int param[]


둘은 같은 선언이다.


WRITTEN BY
CIP_Pooh

,

Call-by-value 란?


- 함수를 호출할 때 단순히 값을 전달하는 형태의 함수호출을 말한다.

- 함수 외부에 선언된 변수에 접근이 불가능하다.


EX)


1
2
3
4
5
void callbyvalue (int num)
{
    if(num<=0)
        return;
}





Call-by-reference 란?


- 메모리의 접근에 사용되는 주소 값을 전달하는 형태의 함수호출을 말한다.

- 외부에 선언된 변수에 접근이 가능하다.


EX)


1
2
3
4
5
6
7
void callbyreference (int * param, int n)
{
    int i;
    for(i=0; i<n; i++)
        printf("%d ", param[i]);
    printf("\n");
}






WRITTEN BY
CIP_Pooh

,
1
2
3
4
5
6
7
8
9
10
11
12
int sample(int num)
 
int main(void)
{
    int num = 10;
    sample(10);
 
    - - - - - - - 
}
 
 
 



위에 보이는 코드와 같이 , 배열을 함수의 인자로  전달하려면 배열을 통채로 복사할 


수 있도록 배열이 매개변수에 선언되어야 한다.


But C언어에서는 매개변수로 배열의 선언을 허용하지 않는다.



WRITTEN BY
CIP_Pooh

,

Basic RCE 7번

2016. 12. 14. 00:00

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.

문제 :

 

VoIP (100 points) - Forensics

Extract a voice.

The flag format is SECCON{[A-Z0-9]}.

 

 

이번에 SECCON CTF가 있어 풀 수 있는 문제가 있으면 풀어보려고 참가해 보았다.

 

이 글에서 풀이를 적고자 하는 100점짜리 포렌식 문제는 내 귀가 문제(?)가 있어서 인지 

 

 flag 값을 불러주는 목소리를 잘 못 알아들어서... 답을 인증 못한 문제이다.. ㅜㅜ

 

그럼 이제부터 푸는 과정을 적어보겠다.

 

우선 이 문제는 voip.pcap이라는 파일 하나를 제공한다.

 

 

 

voip.pcap을 열면 위 사진과 같이 나타나게 된다.

 

와이어샤크에서 voip 음성을 듣는 법을 검색하다 보니

 

https://www.youtube.com/watch?v=iFQKB0MQ-dY

 

설명이 잘 되어있는 영상을 발견해 참고하였다.

 

Telephony - VoIP Calls을 들어가면 아래 사진과 같이 하나의 패킷이 뜬다.

 

 

 

위 사진에서 Play Streams를 클릭하고 재생 버튼을 누르면 음성이 나온다.

 

Hi~ 솰라솰라 하다가 flag is SECCON{9001IVR} 라고 flag 값을 알려주고

 

땡큐 하고 끝난다.

 

 

 

하.. 진짜 이문제 인증 못한게 두고 두고 한이 될 것 같다.. 9001I까지는 알아 들었는데

 

V를 we로 알아들어서...ㅜㅜㅜ

 

아무튼 해당 문제는 이렇게 간단히 풀 수 있는 문제다.


WRITTEN BY
CIP_Pooh

,