분류 전체보기(363)
-
Basic_BOF #2 풀이
이 문제도 Basic_BOF #1와 같이 IDA로 먼저 보고 시작하겠습니다. int __cdecl main(int argc, const char **argv, const char **envp) { char s; // [esp+Ch] [ebp-8Ch] void (*v5)(void); // [esp+8Ch] [ebp-Ch] v5 = (void (*)(void))sup; fgets(&s, 133, stdin); v5(); return 0; } 우선 char형 배열 s를 선언하고, 포인터 변수인 v5를 선언합니다. 여기서 s의 길이는 여기서 v5는 sup이라는 함수(?)를 가리키고 있는 함수 포인터인 것 같습니다. 그리고 fgets로 133byte 길이의 s 배열을 입력받습니다. 마지막에는 v5 함수 포인터가 ..
2021.06.16 -
Basic_BOF #1 풀이
문제 파일인 bof_basic이 바이너리 파일로 주어졌으니 IDA를 이용해서 C 소스파일의 형태로 보겠습니다. int __cdecl main(int argc, const char **argv, const char **envp) { char s; // [esp+4h] [ebp-34h] int v5; // [esp+2Ch] [ebp-Ch] v5 = 67305985; fgets(&s, 45, stdin); printf("\n[buf]: %s\n", &s); printf("[check] %p\n", v5); if ( v5 != 67305985 && v5 != -559038737 ) puts("\nYou are on the right way!"); if ( v5 == -559038737 ) { puts("Yeah..
2021.06.15 -
Socket Programming
- 소켓(Socket)이란? 소켓의 사전적 정의는 "컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점"입니다. 이를 간단하게 풀어 생각하면 데이터를 송수신 할 때 쓰이는 하나의 방이라고 생각하면 될 것 같습니다. - Socket과 http의 차이 둘의 차이를 표로 정리하여 비교해보면 이렇습니다. Socket http 단방향 통신(Client->Server) 양방향 통신 서버로 접근해야 할 때 용이 실시간 연결 할 때 용이 자원을 적게 소모 자원을 많이 소모 소켓은 여러가지 분야에 널리 사용됩니다. - 서버와 클라이언트의 소켓통신 과정 (소켓 프로그래밍) socket() 함수를 사용하여 소켓을 생성해줍니다. 그리고 서버에서 bind() 함수를 사용합니다. bind() 함수는 client가 아닌 serv..
2021.06.14 -
[BOJ 20493] 세상은 하나의 손수건
https://www.acmicpc.net/problem/20493 20493번: 세상은 하나의 손수건 오래된 운동화를 신고, 시원한 공기와 투명한 하늘 아래 따뜻한 햇빛을 받으며 새로 마주하는 이 거리와 손잡고 걷는다. 복잡한 생각 없이 설레는 마음으로 걷다 보면 뛰고 싶고, 같이 달리다 보 www.acmicpc.net - 문제 요약 준원이가 방향을 바꾼 횟수 n, 걸어간 시간 t가, n개의 줄에 방향을 바꾼 시간, 방향이 주어진다. t초에 지정된 방향으로 한 칸씩 이동하고 방향은 왼쪽, 오른쪽 중 하나로만 바꿀 수 있다. 처음에 오른쪽 방향으로 갈 때 t초 후에 준원이의 위치 좌표를 구하시오. - 알고리즘 정리 Tast case 1, 2를 가져와서 시뮬레이션 해보며 정리하겠습니다. Tast case ..
2021.06.09 -
[BOJ 15886] 내 선물을 받아줘 2
https://www.acmicpc.net/problem/15886 15886번: 내 선물을 받아줘 2 욱제는 구사과의 열렬한 팬이다. 오늘 욱제는 구사과에게 선물()을 전달해주려고 한다. 지난 며칠간의 관찰 끝에 욱제는 구사과의 이동 패턴을 모두 파악했다. 구사과가 있는 곳은 1×N 크기의 직 www.acmicpc.net - 문제 요약 문자열의 길이 n, 길이 n인 문자열이 한 개 주어진다. 문자열은 E, W로 이루어져 있고, 이 문자열 위 어떤 부분에 선물을 놓았을 때 그걸 구사과가 가져가도록 해야 한다. 구사과는 문자열 위에서 움직일 수 있는데 E는 앞으로 한 칸, W는 뒤로 한 칸 가는 것을 의미한다. 시작 위치에 상관 없이 최소 몇 개의 칸 위에 선물을 놓아야 구사과가 선물을 가져갈 수 있는가?..
2021.06.08 -
broken-png 풀이
이미지를 보자마자 저렇게 보이는 FLAG 글자 외에도 다른 글자들이 아래쪽에 숨어있을 거라 생각했습니다. HxD를 사용하여 PNG 파일의 세로 크기를 늘려보는 식으로 풀어보겠습니다. PNG 파일의 헤더 구조 그림에서 이미지 세로 크기 부분은 0x10에 04~07까지라고 나와있습니다. 그러므로 위 HxD 화면에 띄운 PNG 이미지의 세로 크기는 00 00 01 00이 될 것입니다. 00 00 01 00을 00 00 10 00으로 바꿔서 PNG로 저장하고 파일을 실행해보겠습니다. 그러면 이렇게 숨어있던 FLAG가 나오게 됩니다. (사실 파일 크기는 00 00 03 00 정도로 해도 충분했을 것 같은데 생각 없이 하다 보니 10으로 해버렸습니다) Dreamhack에 있는 문제들 중 유일한 misc 문제라 한 ..
2021.06.03