pwnable.tw
-
[ 500pts ] UnexploitableSystem/Pwnable.tw 2019. 3. 8. 18:35
pwnable.kr의 unexploitable보다 더 어렵게 만들었다고 한다. 딱히 뭐가 더 어렵다기 보다는 풀이방식이 서로 다르기 때문에 각 각의 매력이 있는 것 같다. [ File ]64Bit : FastcallDynamically Linked: 공유라이브러리 사용not stripped: 안티 디버깅 미적용 [ Mitigation ]Partial RELRO: GOT Overwrite 가능NX: 실행권한 없음 [ Gadget ] Exploit에 필요한 가젯도 없는 상태다.[ How to Exploit? ] 우선 인자구성에 필요한 가젯이 없기 때문에 ( pop rdi, rsi, rdx, ret )이럴 때는 'Return to csu'를 이용해서 인자들을 세팅해줄 수 있다. Exploit시나리오는 여러가지..
-
Return-to-Csu 기법 정리공부정리 2019. 3. 5. 23:47
포너블 문제를 풀 때, 64Bit 바이너리가 까다로운 이유가 바로 'Gadget' 때문이다. 64Bit의 Calling Convention은 Fastcall로 호출된 함수에 인자를 레지스터로 전달한다.이 때문에 Exploit을 구성할 때도 [POP RDI]와 같은 가젯이 반드시 필요하다. 이러한 특이점 때문에 문제에서 가장 흔하게 볼 수있는게 '가젯 제한'이다.이 상황에서 EDI,RSI,RDX 를 구성할 수 있는 방법이 있는데, 바로 Return_to_csu기법이다.[ Return to csu란? ]ELF바이너리를 IDA와 같은 디버깅도구로 열어보면, __libc_csu_init( )를 볼 수 있다.이 함수가 하는일은 바이너리의 _start( )를 호출하는 함수인 gmon_start( )를 호출하는 역할..