본문 바로가기

5. 방학 활동

(63)
[2023.02.05] 워게임&CTF 스터디 2팀 문제풀이(rev-basic-3) 일시: 2023.02.05 팀원: 이수미, 이유빈, 지정현 * 문제 설명 이 문제는 사용자에게 문자열 입력을 받아 Correct 또는 Wrong을 도출하는 프로그램이다. 프로그램을 한 번 실행 시켜보자 일단 “Input :” 이 뜨면서 입력창이 떴고, 1234를 입력했더니 Wrong이 출력된다. 1) x64dbg 사용 먼저 x64 dbg를 이용하여 분석을 해보았다. 문자열 참조 검색을 통해 Correct의 위치를 알아냈고, test eax,eax 부분을 통해 입력값이 검증된다는 것을 알게 되었다. 따라서 그 위 chall3.7FF720A71000 함수는 사용자의 입력 값과 암호를 비교해준다는 것을 짐작할 수 있다. chall3.7FF720A71000 함수를 들여다 보면, 일단 cmp rax,18을 보아 ..
[2023.02.11] 워게임&CTF 스터디 1팀 문제풀이(포너블(2))] #1_sint 문제는 위와 같습니다. 파일을 직접 실행하였습니다. sint.c 코드를 살펴보았습니다. 매우 큰 값이기 때문에 bof 공격이 가능합니다. gdb를 확인하면, 264바이트 이후 ret 값에 들어가고 get_shell() 함수의 주소가 들어가게 설정해주면 됩니다. 함수의 주소는 oxo8048659입니다. 파이썬으로 코드를 구현하고 실행하면 다음과 같습니다. #2_OOB 문제를 확인하면 다음과 같습니다. 프로그램을 실행해 보았습니다. 소스코드를 살펴본 후에 오프셋을 알아냅니다. 마지막으로 파이썬으로 코드를 구현하고 실행합니다.
[2023.02.11] 워게임&CTF 스터디 1팀 문제풀이(포너블(1))] #1_fd 파일 디스크립터를 알아내는 문제입니다. putty를 사용하여 로그인을 합니다. 아무런 정보가 없기 때문에 어떤 파일이 존재하는지 확인하기 위해 ls-l을 사용합니다. fd, fd.c, flag 파일이 존재하는 것을 볼 수 있습니다. 여기서 fd.c 파일을 읽기 위해 cat을 사용합니다. 첫 번째 if문의 코드가 인자가 없을 경우 pass argv[1] a number\n을 출력하라는 의미입니다. 그러므로 인자를 하나 이상 넣어 다음 코드가 실행되게 해야 합니다. 앞에 !가 붙어 있으므로 같으면 1이 나옵니다. LETMEWIN/n과 buf를 같게 만들어 if문을 참으로 만들어야 합니다. 따라서 fd의 값이 0이 되어야 합니다. 0x1234는 10진수로 4660과 같아서 인자 값으로 4660을 넣..
[2023.02.02] 워게임&CTF 스터디 1팀 웹해킹 개념정리] ○ CSRF 웹 어플리케이션 취약점 중 하나 인터넷 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 만드는 공격 → 희생자의 권한을 도용하여 중요기능을 실행하는 것이 가능해진다. 조건) - 위조 요청을 전송하는 서비스에 희생자가 로그인 상태 - 희생자가 해커가 만든 피싱 사이트에 접속 일반) - 조회성(HTTP GET Method) 데이터에는 방어 대상에 두지 않고, 쓰기/변경이 가능한 POST, PATCH, DELETE Mehotd에만 적용 - 정말 중요한 데이터를 조회하거나 GET을 통해 쓰기/변경 등의 동작을 한다면 GET Method에도 방어해야 할 수도 있음 방어 기법) - Referer(현재 요청된 페이지의 이전 홈페이지 주소) 검증 ..
[2023.02.11] 워게임&CTF 스터디 1팀 리버싱 개념정리] ○ 리버싱 정적 분석 : 파일의 겉모습을 관찰하여 분석 (파일 실행X) 동적 분석 : 파일을 직접 실행시켜서 분석하고, 디버깅을 통해 코드 흐름과 메모리 상태 등을 자세히 파악 ○ 어셈블리어 EAX : 산술 연산 및 논리 연산 수행 EBX : 메모리 주소 저장 ECX : 반복문 사용 시 반복 카운터로 사용 반복할 횟수 지정하고 반복 작업 수행 EDX : EAX 레지스터와 같이 쓰임 부호 확장 명령 등에 사용 큰 수의 곱셈 또는 나눗셈 연산 EDI : 복사할 때 목적지 주소 저장 ESI : 데이터를 조작하거나 복사할 때 데이터의 주소 저장 ESP : 메모리 스택의 끝 지점 주소 포인터 EBP : 메모리 스택의 첫 시작 주소 포인터 mov a b : b(데이터)를 a로 복사 lea a b : b(주소)를 a..
[2023.02.02] 워게임&CTF 스터디 1팀 문제풀이(리버싱)] ※ 관련 개념은 방학활동 / 개념정리를 참고해주세요 ※ 해당 문제들은 X64dbg, Ollydbg(올리디버거) 또는 HXD를 사용하였습니다. # Dreamhack REV-BASIC-1 [파일 분석] 1) input 함수를 통해 flag 값을 입력하면 'chall1.7FF6956813B6' 함수에서 입력 값 비교한 후, Correct나 Wrong 메시지 출력 → 해당 함수 따라가기 (test 위의 call 부분 더블클릭) 1) 문자 하나하나에 대해 비교하여 수행함을 알 수 있음 → 각 문자열을 다 합치면 플래그 값이 나온다. # Dreamhack REV-BASIC-3 [파일 분석] 1) input 함수를 통해 flag 값을 입력하면 'chall3.7FF6CBF01000' 함수에서 입력 값 비교한 후, co..
[2023.02.02] 워게임&CTF 스터디 1팀 문제풀이(웹)] ※ 관련 개념은 방학활동 / 개념정리를 참고해주세요 ※ # Dreamhack_csrf-1 실행화면) 실행화면_vuln(csrf) page) 실행화면_memo) 실행화면_notice flag) 실행화면_flag) [코드 분석하기] 1) Cookie 생성됨 2) Domain : 127.0.0.1:8000 (local host) → 제공받은 주소와 포트가 다르므로 쿠키 값이 저장되어있지 않은 것을 알 수 있다. 지정된 도메인에서 확인해야 함 - 이 코드에서도 또한 도메인 주소가 127.0.0.1인 local host로 접근해야한다는 사실을 알 수 있다. 1) userid = admin 정리해보자면, notic_flag 사이트의 userid(쿠기값)는 admin이어야 하며, 포트번호는 local host여야한다..
[2023.2.12] 워게임&CTF 스터디 2팀 문제풀이(fly_me_to_the_moon) 보호되어 있는 글입니다.