Pwnable

Pwnable/LOB

[LOB] 2. COBOLT

passcode : hacking exported (NO DRAG, NO PASSCODE) bash2 입력해주는 것을 까먹지 말자. goblin 이라는 프로그램과 소스코드가 있다. 바로 분석해보자. 작은 버퍼와 표준입력에 대한 문제인 것 같다. cobolt의 문제와 다른 것은 인자가 아닌 표준입력을 받는 함수 gets를 사용하다는 것 뿐이다. 메모리 구조를 분석하고 바로 payload를 짜보자. 메모리 구조는 다음과 같다. —————————— High Address | ret(4) | —————————— | sfp(4) | —————————— ← ebp | buffer(16) | —————————— Low Address shellcode 를 export 하고 shellcode 의 주소를 찾자. shell..

Pwnable/LOB

[LOB] 1. GREMLIN

passcode : hello bof world (NO DRAG, NO PASSCODE) 역시나 bash2 를 입력하고 시작한다. cobolt 프로그램과 그에 대한 소스코드가 들어있다. 코드를 분석해보자. small buffer에 대한 문제인가보다. gate 문제와 buffer의 크기만 달라지고 아주 동일한 소스코드이다. tmp에 gremlin을 복사하여 gdb로 뜯어서 정보들을 얻자. 메모리 구조는 다음과 같다. —————————— High Address | ret(4) | —————————— | sfp(4) | —————————— ← ebp | buffer(16) | —————————— Low Address dummy 도 존재하지 않는다. shellcode 의 주소를 확인해주자. shellcode 의..

Pwnable/LOB

[LOB] 0. GATE

passcode : gate (NO DRAG, NO PASSCODE) LOB의 첫번째 문제이다. (LOB는 옛날 버전이라 “\xff” 정상적인 16진수로 인식하지 못한다고 한다. 따라서 항상 문제 시작할 때 쉘에 ‘bash2’ 를 입력하여 쉘을 바꾸어 주어야 한다.) gremlin 이라는 프로그램과 그의 소스코드가 들어있다. 소스코드를 분석해보자. 간단한 버퍼오버플로우 문제인 것 같다. 또한 gremlin 프로그램에 SetUID가 설정되어 있는지 확인해보자. gremlin 프로그램에 SetUID가 설정되어 있다. 따라서 우리는 프로그램을 실행시키는 동안 root권한 혹은 다음 레벨의 권한을 얻을 것이다. 이제 gremlin 프로그램의 메모리 구조를 살펴보기 위하여 gdb로 분석하여 보자. 메모리 구조는 ..

Pwnable/FTZ

FTZ - level20 [Format String Bug]

LEVEL 20 [level20] passcode : we are just regular guys (NO DRAG, NO PASSCODE) hint 의 코드를 분석해보자. 우선 메모리 구조를 살펴보자. main 함수 부분의 symbol 이 날라가서 gdb로 분석을 할 수 없다. 코드 마지막 줄에서 printf(bleh) 라는 형식으로 출력을 하게 하는데, printf 함수는 원래 printf("%d", a) 처럼 %d 라는 서식 문자를 사용하여야 한다. 여기서 발생하는 취약점이 바로 포맷 스트링 버그(FSB) 이다. printf(bleh) -> bleh에서 bleh라는 배열에 일반 문자열이 있다면 아무 문제 없이 출력 되지만, 배열 안에 서식문자(%x, %c, %s 등)가 있다면 buf 배열의 시작 주소..

Lucvs
'Pwnable' 카테고리의 글 목록 (10 Page)