목록리버싱 기초/ETC (2)
Self-Improvement
PIE 걸려있는 문제를 풀어보기 위해 찾아보던 중 재밌는 문제인 것 같아서 풀어보았으며 많이 생각을하면서 시간을 소요했다. Checksec 해당 바이너리는 모든 보호기법이 걸려있었다 IDA_main main에는 이렇다한게 없고 pwnme()를 보면 될 것 같다. IDA_pwnme 1. read 함수를 통해 buf의 영역을 채울 수 있으며 이때 buf의 크기(0x10)만큼 가득 채울 수 있다. 2. if문에서 입력값에 대한 검증이 부족하다. (마이너스를 넣을 수 있다) 3. buf의 크기를 가득 채울 시에 그 뒤의 memory leak을 수행할 수 있다. IDA_func1, func2, func3, func4 별다른 취약점은 존재하지 않는다. 풀이방법 memory leak을 통해 func1의 주소를 얻어낸..
적용된 보호기법 NX(스택 실행권한 X), ASLR(주소 동적 변환) 파일 정보 ELF 32-bit 실행파일이며 dynamically linked와 stripped로 되어있다. 실행 실행하면 입력값을 받은 후 "WIN"이라는 문자열이 출력이 된다. IDA stripped로 되어있음으로 gdb로 메인을 찾을 수 없지만 IDA로 확인하면 쉽게 알 수있다. (WIN string 찾기 등) main은 0x804841D 주소로 되어있다. 코드로 변환하여 보면 main에서 sub_80483f4(read_sub())를 호출하여 read함수로 입력값을 받고 다시 main에서 write 함수로 "WIN"이 출력된다. read함수에서 0x100만큼 입력할 수 있지만 buf는 0x88크기를 가지므로 BOF가 발생하게 되며 ..