basic_rop_x86 이 문제는 서버에서 작동하고 있는 서비스(basic_rop_x86)의 바이너리와 소스 코드가 주어집니다. Return Oriented Programming 공격 기법을 통해 셸을 획득한 후, “flag” 파일을 읽으세요. “flag” 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{…} 입니다. # 문제 분석 - 소스 코드 main 함수에서 read 함수와 write 함수를 사용함 initialize 함수에서 puts 함수를 사용함 → 인자를 하나만 필요로 하기 때문에 이를 활용하여 페이로드를 작성하면 좋을 것 데이터를 읽어들일 수 있는 함수는 read 함수이며, 이를 통해 system 함수의 주소를 구하게 된다면 이미 ROP 페이로드가 ..
shell_basic 입력한 셸코드를 실행하는 프로그램입니다. main 함수가 아닌 다른 함수들은 execve, execveat 시스템 콜을 사용하지 못하도록 하며, 풀이와 관련이 없는 함수입니다. flag 위치와 이름은 /home/shell_basic/flag_name_is_loooooong입니다. # 문제 분석 - execve, execveat 시스템 콜을 사용하지 못하므로 orw 셸코드를 생각해 볼 수 있다 💡 orw 셸코드란? 파일을 열고, 읽은 뒤 화면에 출력해주는 셸코드 [참고] 2022.04.03 - [System hacking/system hacking] - [Dreamhack] Exploit Tech: Shellcode # exploit from pwn import * context.ar..
# vi 에디터 # vi 에디터 실행 vi # vi 에디터 새로운 파일 만들기 vi 만들파일의이름 * i를 누르면 입력 모드를 통해서 입력을 할 수 있음 * Shift + Spacebar: 한/영 변환 # vi 에디터 종료 - 입력 모드에서 Esc를 누르면 '명령 모드'가 나옴 > :wq를 입력한 후 Enter를 누르면 저장 후 종료할 수 있음 :w 저장(write) :q 종료(quit) :q! 기존의 변경된 내용을 무시하고 종료 :wq 저장 후 종료 > 저장된 내용 확인 가능 # vi 에디터 입력 모드 명령 키 설명 키 설명 i 현재 커서의 위치부터 입력 I 현재 커서 줄의 맨 앞에서부터 입력 a 현재 커서의 위치 다음 칸부터 입력 A 현재 커서 줄의 맨 마지막부터 입력 o 현재 커서의 다음 줄에 입력..
# A Maze Problem - 목표: 입구로부터 출구까지의 경로를 찾음 - 조건: 0은 지나갈 수 있고, 1은 지나갈 수 없음. 직진이나 대각선 방향으로 이동이 가능 > 한 개의 프로그램은 한 개의 미로 경로를 탐색 > 현재 위치에서 이동 가능한 모든 방향 (북쪽부터 시작 → 시계방향으로 이동) 대하여 이동 가능 여부 판단 > 처음 발견한 이동 방향으로 마우스의 좌표를 수정 > 이동 가능한 방향이 없을 경우, 이전 위치로 되돌아감 > 스택을 이용하여 이동했던 위치를 기록하고 이전 위치로 찾아감. 만일 백 트랙을 시도했으나 스택이 비어있다면 결과는 실패 # 미로 찾기 스택 구현 - 구현: 경우의 수를 진행할 때는 스택 안에 쌓고, 벽에 막히면 pop하여 이전 단계까지 돌아옴 # 미로 문제의 특성 - a..