전체 글 30

2026-01-17 동계 모각코 3차 회고

오늘 드디어 rop문제 어셈블리 해석과정이 끝났다.메모리 구조는 REP SFP Canary Buffer 로 각각 8 8 8 56 바이트로 구성되어있다. 이문제는 NX enabled가 되어있기 때문에 rdi(함수호출규약에 의한 함수를 직접 호출하는 레지스터)의 주솟값을 info register통해 0x1인걸 알아내었고 RTL를 활용하여 System라이브러리의 System('bin/sh')를 실행 시키는 것이 목적인 문제였다. 이를 통해 이 문제에 해법은 canary leak를 발생시켜 카나리 값을 알아내 버퍼오버플로우를 통해서 카나리가 변조되지않도록 카나리값에 RET까지 덮어 System('bin/sh')를 발생하면 풀리는 문제였다. 허나 카나리값이 헥스값으로 나오는 문제가 있어 print@plt가 정확하..

2026-01-16 동계모각코 2차 회고

오늘은 함수호출규약,레지스터의 종류에 대하여 공부한 다음에 위 사진에 흰색 줄 쳐진 부분에 대하여 공부하였다.해석한 바로는 rax에 함수에 넣을 공간을 마련하고 함수호출규약(ecx>edx>esi>rdi)에 따라 4번째 인자 3번째 인자...등을 차례대로 넣는 코드이다. 위 stdin은 입력 stdout은 출력을 담당한다는 주석이다. 오늘은 함수를 부르는 법에 대하여 공부하였다. 이제 거의 모든 코드를 해석할수 있을 정도가 된것같아 기쁘다. 추후에는 스택카나리와 같은 보안기법을 어셈블리어로 변형하여 공부하고싶다.

2026-01-02 동계모각코 1차 회고

드림핵의 ROP문항을 풀이하였다.우선 checksec를 통해 스택카나리등 여부를 확인해보자실제 카나리가 적용되어 있고 NX가 적용 되어있다. 그리고 PIE는 되어있지않아서 메모리가 매 실행마다 바뀌지는 않는다.그럼 이제 우분투에 gdb를 활용하여 어셈블리를 확인해보면오늘은 +21까지 어셈블리해석을 진행했는데 push rbpmov rbp,rspsub rsp,0x40은 스택에 rbp를 넣고 0x40만큼 rsp(스택포인터)를 내려 함수가 돌아갈수 있는 공간을 만들어주는 함수 프롤로그 였다.여기서 sub로 함수의 메모리주소를 8(십진수)만큼 빼고 있는데 이는 스택은 메모리주소가 높은데 부터 낮은 곳으로 거꾸로 자라기 때문에 내가 메모리 여유공간을 만들고 싶다면 sub를 내가 메모리를 닫고 싶다면 메모리 주소를 ..

파이썬 자료구조(연결리스트)

이번 글은 저번에 알아보았던 자바자료구조(연결리스트)를 파이썬 버전으로 알아보자 이번 글은 파이썬과 자바에서의 차이를 중점으로 알아보자.연결 리스트(Linked List)는 파이썬과 자바 모두에서 구현할 수 있지만, 두 언어에서의 기본 제공 여부와 사용 방식에는 큰 차이가 있다. 자바에서는 LinkedList 클래스가 표준 라이브러리(java.util 패키지)에 포함되어 있어, 개발자가 직접 노드 구조를 구현하지 않아도 즉시 사용할 수 있다. 반면 파이썬 표준 라이브러리에는 연결 리스트 자료구조가 별도로 포함되어 있지 않으며, 필요할 경우 사용자가 직접 구현하거나 collections.deque와 같은 다른 자료구조를 활용해야 한다.자바의 LinkedList 클래스는 내부적으로 이중 연결 리스트(Doub..

Python 2025.08.15

자바 자료구조(3)

오늘은 여러 리스트의 종류중 연결리스트에 대하여 알아보았다.연결 리스트(Linked List)는 데이터를 선형적으로 저장하지만, 배열처럼 메모리상에서 연속적으로 배치되지 않는 자료구조다. 각 요소(Node)는 데이터와 다른 노드의 참조(포인터)를 함께 저장하며, 필요에 따라 동적으로 크기를 조절할 수 있다. 이러한 특성 덕분에 삽입과 삭제가 효율적이며, 크기 변화가 잦은 상황에 적합하다.연결 리스트의 기본 구성 단위는 노드(Node)다. 단일 연결 리스트(Singly Linked List)에서는 각 노드가 데이터와 다음 노드의 참조를 가지며, 마지막 노드는 null을 가리킨다. 이중 연결 리스트(Doubly Linked List)는 이전 노드 참조까지 저장해 양방향 탐색이 가능하다. 또한 원형 연결 리스..

자료구조 2025.08.15