전체 글

Department of Computer Science and Engineering, 21th, Sungkyunkwan University
Pwnable/LOB

[LOB] 3. GOBLIN

passcode : hackers proof (NO DRAG, NO PASSCODE) bash2 조심. orc 프로그램과 소스코드가 있다. 분석하자. 중간에는 크게 의미없는 코드인줄 알았지만 환경변수를 모두 0으로 만들어서 환경변수를 쓰지 못하게 만들고 있다. 즉 전에 썼던 export를 사용하지 못한다. 또 egghunter 라는 것을 보니 환경변수는 못 쓸 것 같다. 우리는 argv[1][47]을 ‘\bf’로 만들어주어야 한다. 이제 gdb를 통하여 메모리 구조를 살펴보자. 메모리 구조는 다음과 같다. —————————— High Address | ret(4) | —————————— | sfp(4) | —————————— ← ebp | buffer(40) | —————————— | int(4..

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로 분석하여 보자. 메모리 구조는 ..

Lucvs
Lucvs