ROP
-
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( )를 호출하는 역할..
-
[02-11 공부정리(Chaining RTL 정리)]공부정리 2018. 2. 11. 01:10
오늘은 protostar Stack6~7번을 풀었다.6번은 RTL을 7번은 Chaining RTL을 이용해서 풀었다.7번같은 경우는 ASLR이 걸려있는 상황이라면 ROP를 이용해야 하는 문제였다.내일은 ASLR이 걸려있는 상태라고 가정하고 ROP로 문제를 풀어볼 생각이다. 자 그럼 오늘 공부한 부분들을 정리하도록 하겠다. [Chaining RTL] RTL공격을 할때 System( )뒤에 dummy값으로 "AAAA"를 준 적이 있다.RTL 정리할 때도 말했지만 dummy값 부분은 의미없는 부분이 아니다.system( )가 끝나고 복귀할 주소가 저장되어 있는 공간이다.하지만, 우리는 /bin/sh을 따내면 그 뒤 상황은 어디로 복귀하던 상관이 없기에 "AAAA"라는 dummy값을 준 것이다. Chaining..