pwn43 [Toddler's Bottle] - flag [Toddler's Bottle] 이번 문제는 리버싱 문제인거 같다 위 주소로 파일을 다운 받아 보자. gdb로 main함수를 볼려고하니 심볼이 없어서 로드되지 않는다. 그래서 file 명령어로 파일을 확인해보니 정적 링크가 되어 있고 stripped(안티 디버깅)가 되있다. checksec으로 확인해본 결과 Packer 부분에 UPX 패킹이 되어있다. https://upx.github.io/ UPX: the Ultimate Packer for eXecutables - Homepage Welcome UPX is a free, portable, extendable, high-performance executable packer for several executable formats. Please also .. 2021. 3. 27. You are silver 1. Mitigation 보호기법은 GOT Overwrite가 가능하고 실행 권한이 없다. 2. 문제 확인 문제를 실행시키면 입력을 받는데 입력을 받은 값을 출력해주고 You are silver 문자를 출력해준다. 3. 풀이 main 함수 영역을 보면 fgets로 입력을 받고 printf로 출력해주는데 formatstring bug가 일어난다. FSB 문제인거 같다. 계속해서 get_tier함수를 한번 보자. get_tier 함수는 v6의 값에 따라 티어가 정해지는거 같고 result를 출력해준다. IDA로 통해 함수 부분을 살펴보면 paly_game라는 함수가 있는데 이 함수도 살펴 보자. play_game 함수를 보면 get_tier에서 리턴해준 result 값이 4일때 flag를 보여준다. 그러면 .. 2021. 3. 26. [Toddler's Bottle] - bof 이번 문제는 bof문제이다. 위의 주소로 파일을 다운받고 문제를 확인해 보자. 문제를 실행시켜보면 overflow me가 출력됨가 동시에 입력을 받을 수 있는데 입력을 받으니 Nah..를 출력한다. 소스 코드가 같이 제공되니 소스 코드를 확인해보자. 소스 코드를 보면 func함수의 인자로 0xdeadbeef를 넘겨주고 overflowme가 32바이트로 할당되어있다. 계속해서 코드를 살펴보면 gets함수에서 overflowme의 입력을 받는데 여기서 Buffer Overflow 취약점이 일어난다. bof 취약점을 이용해서 key 값을 0xcafebabe로 덮어주면 쉘을 획득할 수 있다!! gdb로 분석해보면 overflowme의 시작 위치에서 부터 0xdeadbeef까지의 거리는 0x34이다 0xdeadb.. 2021. 3. 26. [Toddler's Bottle] - collision 이번 문제는 collision이라는 문제이다 collision이 사전적 의미로 충돌인데 충돌하면 Hash가 생각난다. 생각이 맞는지 ssh로 접속해서 확인해 보자. 소스 코드를 보면 hashcode가 있고 check_password 함수가 보이는데. 입력한 값을 5번 더해서 리턴하는데 리턴 값과 hashcode가 같으면 flag를 읽을 수 있다. 그러면 hashcode값 0x21DD09EC / 5를하면 0x6C5CEC8이다. 이 값을 다시 5번 더하면 0x21DD09E8이 나오는데 원래의 hashcode 값보다 4바이트가 부족하다. argv를 입력할때 (0x6C5CEC8 * 4) + 0x6C5CECC를 해주면 조건문이 참이기 때문에 flag 값을 볼 수 있다. from pwn import * user =.. 2021. 3. 26. 이전 1 ··· 5 6 7 8 9 10 11 다음