Wargame/HackCTF30 Unexploitable #2 Unfexploitable #1의 다은 단계 문제인거 같다. 1. Mitigation 2. 문제 확인 문제를 실행시켜보면 unexploitable #1과 다르게 fflush의 문자열을 이용할 수 없는거 같다. IDA로 확인하자 3. 풀이 main 함수를 보면 fflush가 없는걸 확인 할 수 있다. gift 함수는 똑같이 주어지기 때문에 1번 문제에서 풀었던 것 처럼 system 함수와 fgets를 이용해 주소를 leak하고 ROP를 하면 된다. exploit from pwn import * r = remote('ctf.j0n9hyun.xyz', 3029) e = ELF('./Unexploitable_2') prdi = 0x0000000000400773 system_plt = e.plt['system'].. 2021. 3. 31. Unexploitable #1 1. Mitigation 2. 문제 확인 문제를 실행시키면 입력받고 종료를 한다. 3. 풀이 fwrite로 출력을하고 fgets에서 입력을 받는데 BOF가 일어난다. 여기선 gift 함수가 주어진다. 시스템 함수는 일반적으로 인자를 줄때 명령어를 줘야하는데 명령어가 아닌 값을 주면 오류를 일으킨다. 이를 이용해서 fgets got를 leak하여 ROP를 하는 방법이 있지만. 필자는 다른 방법으로 풀고 ROP exploit 코드는 밑에서 확인할 수 있다. 코드에 fflush가 있는데 우리는 이 sh를 이용하여 쉘을 실행할 것 이다. fflush가 0x4003bb이니 sh는 0x4003bf이다. exploit from pwn import * r = remote('ctf.j0n9hyun.xyz', 3023) .. 2021. 3. 31. 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. SysROP 1. Mitigation 2. 문제 확인 문제를 실행시키면 입력을 받고 프로그램을 종료한다. 문제 이름 그대로 ROP를 해야할거 같은 느낌이다. 3. 풀이 IDA를 통해 문제를 분석해보면 buf와 ret까지의 거리는 0x10 + 0x8(sfp)인 것과 read 함수를 통해 오버플로우가 일어난다. 그런데 특이한게 함수 부분을 보면 사용할 수 있는 함수가 read하나 밖에 없다는점이다. 일단 gdb로 분석해 보자. gdb로 분석할려고 메인을 볼려고하니까 심볼을 불러올 수 없다고 한다.... 그래서 확인해보니 stripped(안티디버깅) 파일이였다. 그래서 가젯을 구하고 ROP를 할려고 했으나 마땅히 사용할 함수는 없어서 한참을 고민했다. 검색을 하면서 찾다보니 syscall을 이용하는 방법이 있었다. 일단 .. 2021. 3. 24. 이전 1 2 3 4 5 ··· 8 다음