SMALL

리눅스 8

[HackCTF] BOF_PIE

[문제] [풀이] 문제 파일을 실행해보니 j0n9hyun 의 주소를 알려주고 종료가 되고 있다. 또한, 일정 값 이상 입력 시 버퍼 오버플로우가 발생하고 있다. 그런데, 주소 값이 계속해서 바뀌고 있으며 주소의 뒷자리 0x909는 고정되고 있었다. 이에 ida로 분석해보니 j0n9hyun 함수는 0x890이었지만, welcome 함수가 0x909인 것으로 보아 프로그램 실행 시 제공되는 주소는 welcome 함수의 주소인 것을 알 수 있다. checksec으로 보호기법을 확인해보니 문제 이름 처럼 PIE 보호 기법으로 인해 주소 값이 랜덤으로 바뀌는 것을 알 수 있다.(ASLR과 유사) gdb를 통해 함수를 확인해보니 j0n9hyun, welcome, main함수에 집중하여 보면 될 것 같다. main ..

Wargame/HackCTF 2021.07.26

[HackCTF] Offset

[문제] [풀이] 문제의 바이너리를 실행하니 일정 개수의 문자열을 입력한 후에는 버퍼 오버플로우가 발생하는 것을 확인할 수 있었다. 보호 기법을 확인하니 ret 주소를 이용한 exploit이나 shellcode를 삽입할 수 없었다. 이에 gdb를 실행하여 함수 목록을 확인해보았다. 함수 목록을 확인하니 two, print_flag, one, select_func, main 함수가 눈에 띄였다. print_flag에서 flag를 획득할 수 있을 것 같고, main을 제외한 다른 함수들이 특이하여 살펴보았다. 먼저 main함수를 보니 main(){ setvbuf(); puts("Which function would you like to call?"); gets(&s); select_func(&s); retu..

Wargame/HackCTF 2021.07.25

[리눅스] Bandit level 28 -> level 29

[문제] [풀이] git 파일을 내려받기 위해 /tmp/sik 폴더를 만들어 이동하였다. git clone 명령으로 문제에서 제시된 것을 내려받을 수 있었다. repo 폴더 아래에 README.md 파일이 존재하였고, 이를 읽어보니 password가 xxxxxxxxxx로 되어있었다. password가 변경되었던 것 같아 log를 확인하였다. 로그를 확인하니 이전의 password를 확인할 수 있었다. [핵심] usage: git [--version] [--help] [-C ] [-c name=value] [--exec-path[=]] [--html-path] [--man-path] [--info-path] [-p | --paginate | --no-pager] [--no-replace-objects] [..

Wargame/bandit 2021.07.24

[리눅스] Bandit level 27 -> level 28

[문제] [풀이] git을 이용해 문제를 해결해야 함을 알 수 있었는데, 문제 해결에 앞서 git이 설치 되어 있는지 확인해보았다. home 디렉토리에서 문제에서 제시한 경로에 대해 다운하려고 하니 권한이 없었다. -> 다운로드를 비롯한 쓰기 권한은 임시 폴더인 /tmp 디렉토리에만 있기 때문! 이에 /tmp/sik 이라는 임시 폴더를 만든 후 해당 경로로 이동하여 git clone 명령을 사용하니 내려 받을 수 있었다. 다운 후 파일 목록을 확인하니 repo 라는 디렉토리가 생성되었고, 해당 폴더로 이동하니 README 파일이 존재하였다. 파일을 읽은 결과 bandit28의 password를 획득할 수 있었다.

Wargame/bandit 2021.07.24

[리눅스] Bandit level 25 -> level 26 & level 26 -> level 27

[문제] [풀이] ls 명령으로 파일 목록을 확인해보면 bandit26.sshkey 파일을 확인할 수 있다. 이전과 동일한 방법으로 ssh 연결을 시도해볼 수 있다. 그런데 연결이 계속 끊어지고 있었다. bandit26 의 passwd 파일을 읽어보니 /usr/bin/showtext에 대한 경로가 나와있었다. 파일을 읽어보니 more 명령이 실행되면 ~/text.txt 파일이 열리는 것을 볼 수 있었다. more 명령어는 파일 내용이 길 때 끊어가면서 읽을 수 있는 명령이다. 그러기 위해서는 bandit26의 연결 내용이 조금씩 출력되게 해야하기 때문에 창의 크기를 줄여주면 해결할 수 있다. more 창이 나오게 되면 v로 vi 에디터를 켤 수 있다. 해당 명령을 입력해주면 명령에 대한 결과가 vi 창에..

Wargame/bandit 2021.07.20

[리눅스] Bandit Level 4 -> Level 5

[문제] 문제의 핵심은 inhere 디렉토리에서 사람이 읽을 수 있는 파일을 찾아야 하는 것입니다! 아마 그 파일 속에 password가 존재하겠죠? 바로 시작해보겠습니다--! [풀이] bandit4 계정으로 접속해서 가장 먼저 해야하는 일은 뭐다?? --> ls 로 파일 및 디렉토리 리스트 확인하기! 확인해보겠습니다 ㅎㅎ 이번 문제에도 inhere이라는 디렉토리가 존재하는데요! cd 명령어를 통해 inhere 디렉토리로 이동해보겠습니다. 지난 레벨에서 현재 경로 확인하는 법 알려드렸는데 기억나시나요? 기억 안나시는 분은 bandit level 3 -> level 4 를 참고해주세요! pwd 명령어를 통해 현재 위치가 inhere 디렉토리에 있음을 확인할 수 있습니다. 무사히 이동했으면 inhere 디렉..

Wargame/bandit 2021.04.03

[리눅스] Bandit Level 3 -> Level 4

[문제] password가 inhere이라는 디렉토리 속에 숨김파일로 존재한다고 하네요! 숨겨진 파일을 어떻게 확인해야 할지 시작해보겠습니다아-! [풀이] bandit3에 접속해보겠습니다. (접속방법은 bandit0에 자세히 나와있어요!) 쉘에 접속하면 가장 먼저 해야될 일은 뭐다??! --> ls 명령으로 파일이나 디렉토리 확인하기! ls -al 명령어를 통해 홈디렉토리의 모든 파일과 디렉토리를 확인하니 inhere 디렉토리가 있군요! 그렇다면 inhere 디렉토리 속으로 이동해봐야겠네요! 더보기 참! 디렉토리와 파일에 대해서 설명 없이 지금 레벨까지 와버렸지만.. 간단하게 말씀드리자면 디렉토리는 흔히 윈도우의 폴더와 동일하고, 내부 파일은 txt, .c, .py, .cpp를 비롯해 바이너리 등을 포함..

Wargame/bandit 2021.04.03
LIST