SMALL

분류 전체보기 117

[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

[HackCTF] Simple_Overflow_ver_2

[문제] [풀이] 바이너리를 실행해보면 입력 값에 대해 버퍼에 저장하여 주소와 함께 출력해주는 것을 확인할 수 있다. 주소는 실행할 때마다 바뀌고 있어 버퍼에 대한 값은 pwntool로 받아서 사용해야 할 것 같다. 보호 기법을 확인하니 NX 가 disabled 되어 있어 쉘코드를 작성할 수 있음을 확인할 수 있다. main 함수를 확인하니 꽤나 긴 흐름을 확인할 수 있었는데, 주요 함수들을 위주로 정리해보면 다음과 같다. main+61: Data : 출력 main+66: ebp-0x88 주소를 가져옴. main+76: %s로 문자열을 입력 받을 것을 의미함. main+83: scanf 함수 호출 -> 사용자의 입력 받음 main+88~232: 주소 값과 함께 사용자가 입력한 문자열을 1바이트 단위로 보..

Wargame/HackCTF 2021.07.25

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

[문제] [풀이] /tmp 아래에 sikkkk 폴더를 만들어 git clone 명령을 통해 문제의 파일을 다운하였다. repo 폴더 아래에서 README.md 파일을 확인할 수 있다. 해당 파일을 읽어보면 password가 보이지 않는다. 작업 변경에 대한 로그를 확인하여도 특별한 변경사항이 보이지 않는다. git에서는 branch 작업을 할 수 있는데 branch 목록을 확인해보면 현재 branch는 초록색 글자로 작성된 master 임을 알 수 있고, master이외에 /origin/dev와 /origin/sploits-dev가 존재하는 것을 확인할 수 있다. 이에 checkout 명령을 통해 dev branch로 변경하였고, README.md 파일을 읽어보면 master와 달리 password를 읽..

Wargame/bandit 2021.07.24

[리눅스] 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

[Pwnable.kr] input2

[문제] [풀이] 문제에 접속해 파일 목록을 확인하니 input이라는 실행파일과 c코드가 존재하였다. input.c 파일을 확인하면 다음과 같은 소스코드를 확인할 수 있다. 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 int main(int argc, char* argv[], char* envp[]){ 8 printf("Welcome to pwnable.kr\n"); 9 printf("Let's see if you know how to give input to program\n"); 10 printf("Just give me correct inputs then you will get the flag :)\n"); 11 12 // argv 13 ..

Wargame/pwnable.kr 2021.07.22

[Pwnable.kr] random

[문제] [풀이] 문제에 접속해 파일 목록을 확인하니 random 실행파일과 c코드를 확인할 수 있다. random.c 파일을 확인하면 다음과 같다. 1 #include 2 3 int main(){ 4 unsigned int random; 5 random = rand(); // random value! 6 7 unsigned int key=0; 8 scanf("%d", &key); //입력 값을 key 변수에 저장 9 10 if( (key ^ random) == 0xdeadbeef ){ //입력 값인 key와 random 값을 xor 연산하여 0xdeadbeef가 나와야 함. 11 printf("Good!\n"); 12 system("/bin/cat flag"); 13 return 0; 14 } 15 1..

Wargame/pwnable.kr 2021.07.22

[CodeEngn] Basic RCE L04

[문제] [풀이] 프로그램을 실행시키면 정상이라는 문자열이 출력된다. 이외에는 특별한 것이 없으므로 ollydbg를 실행시켜보았다. ollydbg에서 프로그램을 실행해보니(F9) 디버깅 당함이라는 문자열이 출력되는 것을 보아 안티디버깅이 적용되어 있는 것을 알 수 있다. 이에 한 줄씩 코드를 실행(F8)해보며 어떠한 과정을 거칠 때 디버깅 당함이라는 문자열이 출력되는지 확인해보았다. 프로그램을 실행하다보니 GetCommandLineA 라는 함수를 지나니 안티디버깅이 적용됨을 확인할 수 있었다. 이에 해당 함수 내부를 보기 위해 SetIn 과정을 수행하였다. GetCommandLineA 함수 내부에서 코드를 실행해보니 CALL 04. 0040100F 호출 후 안티디버깅이 적용됨을 알 수 있었다. 이에 St..

Wargame/CodeEngn 2021.07.22

[CodeEngn] Basic RCE L03

[문제] [풀이] 문제 파일을 실행하니 해독할 수 없는 문자열이 나왔고, 구글링하니 독일어라고 한다..! key 를 입력하는 창이 실행되었고, 아무 문자나 입력해보았다. 문자열 검증에 실패할 경우 error가 출력되었다. 이에 ollydbg를 통해 디버깅을 해보았다. 어셈블리를 확인하니 입력한 문자열을 비교해서 password가 맞고 틀림을 나타내주는 것 같았다. 비교의 성공 여부를 나타내는 문자열 앞에 unicode로 2G83G35Hs2를 push 한 후에 varStrCmp 함수를 호출하는 것을 보아 해당 문자열과 입력값을 비교함을 알 수 있다. 따라서 key 값으로 2G83G35Hs2을 입력해보면, 성공 메시지를 획득할 수 있다. 그런데, 문제는 스트링 비교 함수를 묻고 있으므로 정답은 varStrC..

Wargame/CodeEngn 2021.07.22

[Webhacking.kr] old-15

[문제] [풀이] 문제에 접속하면 접근 권한이 없다는 말과 함께 사이트의 첫 페이지로 이동하게 되는데, 이는 alert 함수를 포함하고 있는 자바스크립트가 동작되고 있기 때문이다. 이것을 방지하기 위해서는 사이트 내부의 설정을 변경해야 한다. whale에서는 설정의 검색 창에서 자바를 검색하면 자바스크립트 차단 여부를 묻는 곳을 확인할 수 있고, 여기서 설정할 수 있다. 설정 후 소스코드를 확인할 수 있고, document.write 함수를 확인할 수 있다. href 태그를 보니 ?getFlag를 출력하는 코드가 작성되어 있었다. 이를 실행하고자 console 창으로 이동하였고, 명령을 실행한 결과 GET FLAG라는 문구를 확인할 수 있었다. 하이퍼링크를 클릭하면 문제 풀이에 성공하였다는 문구를 확인할..

LIST