Wargame/pwn.college
File struct exploit - level 4
1. intro 2. code 및 분석 2.1. code 생략. 2.2. 분석 return address를 출력해주고, file structure에 값을 입력받은 뒤 종료된다. 더불어 win 함수가 존재한다. 3. 취약점 확인 및 공격 준비 3.1. 취약점 file structure 변조에 따른 aaw, aar 3.2. 공격 준비 단순히 문제를 푸는 것만 생각하면 file structure 변조를 통해 ret address를 win address로 변조하면 challenge 함수가 종료되면서 win 함수를 실행하게 된다. 다만, 페이로드 구성 중 다소 헷갈리는 부분이 발생했는데, aar시에는 아무 상관 없지만, aaw 시에는 buf_end는 buf_base + 1024보다 큰 값을 가져야하고, aaw 값..
format string bug - level10, 11, 12
1. intro 2. code 및 분석 2.1. code 생략 2.2. 분석 level 10 : exit로 func 함수가 종료되며, PIE, relro가 걸려있지 않고, 한번만 입력 가능하다. level 11 : exit로 func 함수가 종료되며, PIE, Full relro가 걸려있고, 두번 입력 가능하다. level 12 : func 함수가 leave, ret으로 종료되며, 대부분의 보호 기법과 동시에 "$" 문자를 필터링하며 두번 입력 가능하다. 3. 취약점 확인 및 공격 준비 3.1. 취약점 format string bug 3.2. 공격 준비 level 10 : PIE가 걸려있지 않기 때문에 주소 확인이 간단하고 relro가 걸려있지 않아 got overwrite가 가능하다. 통상적으로 하는 ..
Return Oriented Programming - level15
1. intro 2. code 및 분석 2.1. code 생략 2.2. 분석 바이너리를 실행하면 소켓을 생성해서 입력을 받으며, 한번 실행된 바이너리에 여러번 접속할 수 있다. 3. 취약점 확인 및 공격 준비 3.1. 취약점 buffer overflow 3.2. 공격 준비 레벨 14와 유사하지만 레벨 14에서는 메인 함수로 돌아갔다면 레벨 15에서는 libc start main으로 리턴한다. 그러므로 libc 내의 특정 위치로 리턴해야한다. BROP은 기본적으로 stop gadget을 찾아야하는데, 여기서는 특정 가젯을 타겟으로 리턴하면 바이너리가 무한루프에 빠진건지 다시 접속이 불가한 것을 볼 수 있었다. 그러므로 특정 가젯이 아닌 적당한 함수를 찾아서 이를 기준으로 나머지 주소를 브루트포스 할 수 있..
intro
pwn college 문제의 경우 매우 쉬운 문제부터 어려운 문제까지 다양하기에 풀면서 어려웠던 문제 배울점이 있었던 문제 각 항목의 가장 마지막 문제 만 write up을 작성할 예정 입니다. 예를 들어 ROP의 경우 현재 이 글을 작성하는 시점에 all clear 하였지만 level 15만 작성되어있습니다. 만약 format string bug의 level 10에 대한 글이 올라오면 그 이전 문제는 모두 푼 것이니 궁금하신 부분이 있다면 이를 참조해서 문의해주시기 바랍니다.