나의 이야기
취소

[ HackCTF ] x64 Buffer Overflow

문제 분석 main함수에서 scanf를 보면 BOF 취약점이 존재한다. callMeMaybe함수에서는 shell을 획득할 수 있다. 문제 풀이 변수 s는 ebp-0x110에 위치하므로 다음과 같이 payload를 작성할 수 있다. dummy(0x110byte) + sfp(8byte) + 0x0000000000400606(c...

[ HackCTF ] 내 버퍼가 흘러넘친다!!!

문제 분석 이름을 입력받고 gets 함수로 다시 값을 입력받고 있다. 여기서 입력받는 문자열의 길이를 확인하지 않아 BOF가 발생하게 된다. 문제 풀이 변수 s는 크기가 작아 쉘코드를 넣을 수 없다. 따라서 name에 쉘코드를 넣고 BOF를 발생시켜 return address를 name으로 바꿔주면 된다. from pwn i...

[ HackCTF ] Basic_FSB

문제 분석 vuln()함수를 보면 snprintf에서 FSB 취약점을 찾을 수 있다. 또한 shell을 얻을 수 있는 flag()함수가 있다. 문제 풀이 FSB를 이용하여 printf의 got를 flag()함수의 주소로 덮어주면 shell을 얻을 수 있다. 간단하게 FSB를 발생시켜보면 2번째 %x에서 첫 번째 인자 ...

[ HackCTF ] Basic_BOF #2

문제 분석 IDA로 분석해보면, fgets 함수에서 bof가 발생하는 것을 알 수 있다. 또한 shell을 실행시켜주는 함수가 따로 존재한다. 문제 풀이 fgets함수에서 bof를 발생시켜 v5함수의 주소를 shell()함수의 주소로 바꿔주면 된다. s는 ebp-0x8C에 위치하고 v5는 ebp-0xC에 위치하므로 0x...

[ HackCTF ] Basic_BOF #1

문제 분석 IDA로 분석해보면 변수 s에 값을 입력받고, 변수 v5가 0xdeadbeef이면 flag를 얻을 수 있다. 문제 풀이 s는 ebp-0x34에 위치하고 v5는 ebp-0xC에 위치하므로 0x28만큼의 dummy값을 입력하고 0xdeadbeef를 입력하면 된다. from pwn import * p = remote('c...

[ Dreamhack ] shell_basic

문제 분석 execve함수 등을 사용하지 못하는 것을 보니 flag 파일을 읽을 수 있는 쉘코드를 직접 작성해야 한다. 문제 풀이 pwntools의 shellcraft를 이용하여 쉘 코드를 작성하면 된다. from pwn import * p = remote('host3.dreamhack.games', 9412) co...