SWING/PWNABLE (5) 썸네일형 리스트형 Pwnable 스터디 4주차 과제 1. GDB 사용방법 정리 GDB : GNU Debugger의 약자 오픈소스로 공개되어 있는 무료 디버거 설치 명령어 : sudo apt-get install gdb gdb-peda는 더 편리함! 간단한 명령어들 b *[메모리 주소/함수이름/offset] : 해당 함수 부분에 breakpoint를 건다.(그 줄 직전에 멈춤) continue : 다음 브레이크 포인트까지 실행 si : 한 줄씩 실행 info b : breakpoint 정보 확인(info 뒤에 특정 단어를 쓰면 그 특정 단어에 대한 정보를 확인할 수 있다.) d (breakpoint 번호) : breakpoint 삭제 run(=r) : gdb 내부에서 프로그램 실행 disass (함수) : 함수를 디스어셈블 quit : gdb 나가기 간단하.. Pwnable 스터디 3주차 과제 보호되어 있는 글입니다. Pwnable 스터디 2주차 과제1 과제1은 pwntools에서 쓸 수 있는 간단한 명령어들을 정리하는 것이다. 우선 ppt에 나와있는 것들부터 다시 확인해보자. 원격인 경우 : remote(IP, PORT) 로컬인 경우 : process(PATH) ssh인 경우 : ssh(USERNAME, IP, PORT, PASSWORD) 한 줄 받기 : recvline() str까지 받기 : recvuntil(str) int만큼 받기 : recv(int) value값 보내기(read 역할) : send(value) 데이터 한 줄 보내기(scanf, gets, fgets 역할) : sendline(value) 쉘에 직접 명령을 전송, 수신하기 : interactive() ppt 내용을 정리하자면 위와 같고, 이 중에서 헷갈렸던 몇 개만 더 설명을 적어.. Pwnable 스터디 2주차 과제2 과제2는 swing_pwn_chall 문제를 푸는 것이다. swing_pwn_chall을 먼저 들여다 보면 위와 같이 되어있는데, 9번째줄을 보면 20번 반복한다. 뭐를? a라는 랜덤숫자와, b라는 랜덤숫자를 덧셈 형식으로 출력하고 사용자가 답을 입력하도록 되어있다. 이 때 답이 맞으면 correct를 출력하며 전부 다 맞았을 시 Congrats!와 함께 플래그가 출력되게 짜여져 있다. 사실 이 코드로만 보면 시간이 상관없으므로(시간함수를 쓰려고 했으나 누락되어있는걸 확인할 수 있음) 20번을 일일이 다 계산해서 해도 되긴하지만 이 과제는 pwntools 사용법 습득이 목적이므로 pwntools를 이용하는 더 간편한 방법으로 풀어볼 것이다. 우선 힌트로 준 코드를 틀로 잡았다. 위 코드 기준으로 첫줄부터.. Pwnable 스터디 1주차 과제 리눅스 메모리 구조 문서화 1. 코드 영역(=텍스트 영역) -실행할 프로그램의 코드가 저장되는 영역으로, 컴파일 된 기계어가 들어간다. -코드만 저장되어 있기 때문에 읽기 권한만 있다. -명령 실행 순서는 순차적이지 않아서 순서를 맞추기 위해 EIP(명령 포인터) 레지스터를 이용한다. -프로그램 시작과 동시에 할당되며, 프로그램이 종료될 때 메모리가 소멸된다. -함수, 제어문, 상수 등이 여기에 지정된다. 2. 데이터 영역 -초기값이 있는 전역변수와 정적변수, 문자열 상수가 저장되는 영역이다. -프로그램 시작과 동시에 할당되며, 프로그램이 종료될 때 메모리가 소멸된다. 3. BSS 영역 초기값이 없는 전역변수와 정적변수, 0이나 NULL로 초기화된 변수들이 할당된다. BSS 영역은 그런 변수들에게 메모리.. 이전 1 다음