Wargame/HackCTF 6

ROP Write-Up

1. rop 1.1 파일 분석 1 - file 명령어로 rop 파일의 종류를 확인해보니 32bit ELF 파일임 - rop 파일을 실행해보니 사용자에게 입력값을 받고 'Hello, World!.' 를 출력함 - ida로 코드를 디컴파일하여 확인해보니 main 함수에는 write 함수가 존재함 - vulnerable_function 함수에는 read 함수가 존재함. 이를 통해 write함수로 출력, read함수로 입력이 가능하여 ROP공격 기법을 사용할 수 있음 1.2 poc - 5번째 줄 : remote로 워게임 서버에 접속하기 위한 코드 - 6번째 줄 : 해당 프로그램의 함수 주소를 쉽게 사용할 수 있도록 해주는 코드 - 7번째 줄 : 라이브러리 주소를 쉽게 사용할 수 있도록 해주는 코드 - 9번째 줄..

Wargame/HackCTF 2021.09.30

RTL_World Write-Up

1. rtl_world 1.1 파일 분석 1 - file 명령어로 rtl_world 파일의 종류를 확인해보니 32bit ELF 파일임 - rtl_world 파일을 실행했을때 얻을 수 있는 정보를 4가지로 나누어 정리함 ① System Armor와 Shell Sword를 갖게 된다면 Binary Boss를 kill할 수 있음 ② 현재 갖고있는 골드 현황을 표시해줌 ③ 선택할 수 있는 메뉴를 보여줌 ④ 사용자가 번호를 입력하여 원하는 메뉴에 진입할 수 있음 1.2 메뉴 1.2.1 메뉴 1 (Information the Binary Boss!) - 해당 바이너리의 메모리 보호기법 적용 여부와 Binary Boss에 대한 정보를 출력함 1.2.2 메뉴 2 (Make Money) - 1번~3번 메뉴가 추가로 존재..

Wargame/HackCTF 2021.09.19

x64 Simple_size_BOF Write-Up

1. x64 Simple_size_BOF 1.1 파일 분석 - file 명령어로 Simple_size_bof 파일의 종류를 확인해보니 64bit ELF 파일임 - Simple_size_bof 파일을 실행해보니 '삐빅 - 자살방지 문제입니다.'를 출력하며 메모리 주소값으로 출력되는 buf문을 출력하며 입력값을 받음 - ida로 코드를 디컴파일하여 확인해보니 2가지 포인트를 알 수 있었음 point 1. printf함수에서 %p(포인터)를 통해 v4변수의 시작 주소를 출력함 point 2. get함수를 통해 v4에 27952bytes 보다 많은 값을 입력받을 수 있음 - ASLR이 적용되어 있지만 바이너리를 실행하면 v4 변수의 시작 주소를 출력하기 때문에 shellcode를 삽입하여 RTS(Return T..

Wargame/HackCTF 2021.09.16

내 버퍼가 흘러 넘친다!!! Write-Up

1. 내 버퍼가 흘러 넘친다!!! 1.1 파일 분석 - file 명령어로 prob1 파일의 종류를 확인해보니 32bit ELF 파일임 - prob1 파일을 실행해보니 Name, input을 2번에 걸쳐 값을 입력받음 - ida로 코드를 디컴파일하여 확인해보니 2가지 포인트를 알 수 있었음 point 1. read함수를 통해 name에 0x32(50bytes)만큼 값을 입력받을 수 있음 point 2. get함수를 통해 s에 20bytes보다 많은 값을 입력받을 수 있음 - ida에서 Name 변수를 확인해보니 bss영역에 위치한 것으로 보아 전역변수임을 알 수 있음. 이를 통해 ASLR이 적용되어 있는 스택영역이 아닌 bss영역에 shellcode를 삽입하여 RTS(Return To Shellcode) ..

Wargame/HackCTF 2021.09.16