잊기전에 적어두는 bash trick

최근 CTF 들에 bash trick 이 너무 많이 올라오는 것 같아서 이참에 한 번 정리해놓고 가야겠다. - sh, bash, dash 등이 필터링 되어있는 경우 : $1 을 붙이는 것으로 우회 가능 (s$1h) * $1 에는 아무런 내용이 없기 때문에 bash에서는 sh 만 인식하게 된다. * 동일한 원리로 다음과 같은 상황도 가능하다. - vi가 필터링 되어있지 않은 경우 : * vi안에는 :! [command]로 쉘을 실행시킬 수 있는 기능이 있기 때문에 이것으로 쉘을 획득할 수 있다. (Layer7 Talmoru Party 문제에서 처음 알게 되었다.) - flag 등 파일 이름이 필터링 되어있는 경우 : * bash에서 기본으로 제공하는 regex 를 이용하면 된다. 다음과 같은 형식으로 우회..

ROP with libc leak

레드벨벳 웬디 CTF 문제를 풀 때 ROP를 이용해서 공격하는 문제들이 항상 나오는데, 이번에 Layer7 CTF talmo_party 문제와 사이버가디언즈 2회차 문제들을 풀어보면서 입력받는 함수가 없을 때 어떤 식으로 ROP exploit 코드를 구성하는지 알게 되어 블로그에 글을 남긴다. 만약 입력받는 함수에서 stdin을 통한 fgets() 함수를 사용했을 경우, 우리는 ROP chain에서 fgets()를 사용할 수 없게 된다. 왜냐하면 stdin을 인자로서 넘겨줄 수 있는 방법이 없기 때문이다. 실제 코드에서 stdin을 인자로 넘겨줄 때는 libc 상의 실제 주소로 들어가기 때문에 우리는 libc leak 이라는 것을 통해서 stdin을 사용해야한다. (그런데 libc leak 을 하게 되면..

FSB 공격시 유용한 것들

아이린 움짤로 간단하게 시작하는 블로그 포스팅 포너블 공부를 코드게이트 주니어 본선 이후로 완전히 놓아버렸더니, 감이 너무나 많이 떨어져서 요즘 다시 포너블을 공부하고 있다. 내가 놓기 전에도 FSB 같은 경우는 '어떤 취약점이고 어떻게 공격하면 된다'라는 것만 알고 있고 실제로 CTF 문제를 풀거나 직접 해본 적이 없어서 지금 하고 있다. 사실 FSB라는 건 정말 공격자 입장에서는 어이없는 공격 중 하나이다. 이건 정말로 프로그래머가 귀찮은 작업을 하기 싫어서 나는 취약점이기 때문이다. 위의 소스를 보면 FSB 취약점이 바로 보이게 된다. printf(buffer); 에서 취약점이 발생한다. argv[1] 로 %p를 입력하면 printf는 ESP 뒤의 스택을 보여주게 된다. %p 가 printf 로 전..

LoB에서 bash2 명령을 사용하는 이유

Lord of Bof에서 bash2 명령을 사용하는 이유는 bash에서 \xff 를 자동으로 \x00 으로 바꿔주기 때문이라고...

python jail

"A""B" == "A"+"B" setattr(__builtins__,"delattr",dir(__builtins__)[90])setattr(__builtins__,"s",eval(delattr)(__import__("re"),dir(__import__("re"))[48])) eval(delattr)(__import__(str(eval(delattr)(s,"modules"))[2648:2650]),dir(__import__(str(eval(delattr)(s,"modules"))[2648:2650]))[215])("/bin/sh") ' ' == '\t' res = list()res.append(dir(globals())[0][0])res.append(dir(globals())[0][0])res.appen..

Shell Escaping tips

보통 쉘 이스케이프 문제가 나오면 cat 이나 flag 라는 문자열을 막는데 개꿀 명령어들이 있다. fold : cat 하고 똑같음 nl : cat하고 똑같은데 줄 번호까지 보여줌`

64bit calling convention

포너블 문제를 풀 때 32bit에서는 ppr 류의 가젯을 사용하면 되지만, 64bit에서는 이런 식으로 진행되지 않는다. function@plt + rdi + rsi + rdx + rcx 이런 식으로 진행된다.

gcc 컴파일러 유용한 옵션

-fno-stack-protector : Canary 보호기법 끄기 -z norelro : No relro 로 만들기 -no-pie : PIE 끄기

pwntools 사용 팁

오늘 포너블 익스 코드를 짜고 있는데 옆에서 주창이가 슥슥하더니 LIBC에 있는 값들이 불러져 왔다ㅋㅋㅋㅋ 이런 식으로 e.libc 를 불러오게 되면, ELF 로 저장한 (e) 바이너리가 사용하는 LIBC가 저장된다고 한다.

Codegate 2018 quals Cat Shop Write up

2018년 코드게이트 Cat Shop 문제의 풀이이다. 대회에서 해당 문제를 제일 처음으로 풀었다. 해당 부분에서 UAF 취약점이 발생한다. 거기에서 스슥하고 풀면 된다. LOB 급으로 쉬운 문제였으나 대회 당일에 왜이리 느리게 풀었는지 모르겠다.