본문 바로가기

전체 글

(24)
[Webhacking.kr] Old - 24 문제 풀이 제 아이피와 사용자 에이전트(User agent)가 보이고, 그 아래 잘못된 아이피(Wrong IP!)라고 표시가 되어있네요. 일단 소스 코드를 확인해 보겠습니다. PHP 코드가 있네요. 대충 보니 $ip 변수에 클라이언트의 아이피 주소를 담고, 이 값이 127.0.0.1일 경우 문제가 풀리는 것 같습니다. 하지만 아이피 주소는 서버의 REMOTE_ADDR로 얻어오기에 얼핏 보면 불가능해 보이지만, 상단에 extract($_COOKIE); 코드가 있기 때문에 값을 제 마음대로 바꿀 수 있습니다. https://www.php.net/manual/en/function.extract.php PHP: extract - Manual [New Version]This function is very useful for..
[Webhacking.kr] Old - 16 문제 풀이 알 수 없는 별이 보이네요. WASD 키를 누르니 큰 별이 막 움직이네요. 일단 소스 코드를 먼저 확인해 봅시다. 대충 보니 mv 함수에서 별을 움직이게 하는 것 같네요. 매개변수인 cd에 키 코드가 들어가는 것 같고요. 맨 마지막 if 문이 좀 수상해 보입니다. 124번에 맞는 | 키를 눌러보았습니다. 풀렸네요! 그냥 JavaScript 문제인 것 같습니다... https://webhacking.kr Webhacking.kr Index Welcome Stranger! Notice(en) [2019-08-18] In the process of receiving service, some loss of data has been observed. For example, in very few accounts t..
[Webhacking.kr] Old - 15 문제 풀이 들어가자마자 경고 창이 뜨면서 강제로 메인 화면으로 돌아가지네요. 소스 코드를 한번 확인해 봅시다. 크롬의 경우 주소 앞에 view-source를 넣어주면 쉽게 소스 코드를 확인할 수 있습니다. document.write("[Get Flag]"); 코드가 수상하네요. 주소 뒤에 ?getFlag를 한 번 넣어봅시다. https://webhacking.kr/challenge/js-2/?getFlag 이렇게 입력하고 들어가니 문제가 풀렸네요! https://webhacking.kr Webhacking.kr Index Welcome Stranger! Notice(en) [2019-08-18] In the process of receiving service, some loss of data has been obs..
[Webhacking.kr] Old - 01 문제 풀이 들어가면 가장 먼저 보이는 화면입니다. view-source 링크를 클릭해 소스 코드를 확인해 보겠습니다. PHP 소스 코드가 보이네요. 중요한 부분은 아래 부분입니다. user_lv 쿠키의 값이 5보다 크면 solve(1) 함수를 호출하는 것으로 보아 저 부분을 실행시키면 될 것 같네요. 하지만 6 이상일 경우 1로 초기화되기 때문에 5보다 크고 6보다 작은 5.5 같은 값을 넣어주면 될 것 같습니다. 쿠키 변조는 간단히 EditThisCookie 확장 프로그램을 사용했습니다. user_lv 값을 5.5로 바꾼 뒤 새로고침을 하면 이렇게 문제가 풀립니다. 가장 기본적인 쿠키 변조 문제였네요. https://webhacking.kr Webhacking.kr Index Welcome Stranger! No..
[Project] 지뢰 찾기 게임 (React) Play: https://nbsp1221.github.io/react-minesweeper-game React 공부용으로 만든 지뢰 찾기 게임입니다. 지금까지 웹 프로그래밍은 해온 게 많아서 HTML, CSS, JavaScript 같은 언어에는 많이 익숙했지만, 지금까지 써본 라이브러리는 고작 jQuery 말곤 없었기에 적응하는데 꽤나 고생했습니다. 더구나 React는 라이브러리라고 하기에는 뭔가... 라이브러리보다 프레임워크인 듯한 느낌이 강했습니다. 웹인데 빌드 개념이 등장하고 웹팩(Webpack) 등등 이상한 게 마구 등장하니 어렵게 느껴진 것 같네요. 하지만 괜히 인기 있는 라이브러리가 아니겠죠? 처음 배웠을 땐 도대체 이걸 왜 하나 싶었지만, 막상 프로젝트를 진행해보니 확실히 편한 부분들이 많은..
[Linux] SSH 접속 포트 변경하는 방법 기본적으로 SSH 접속 포트는 22번으로 설정되어 있습니다. 하지만 기본 포트를 그대로 사용하게 되면 외부의 공격에 쉽게 노출될 수 있기 때문에 Fail2ban 같은 프로그램을 이용하거나 아예 다른 포트로 바꿔주는 것이 좋습니다. 어려운 비밀번호를 설정해서 해킹 당할 걱정이 없겠거니 하고 그냥 놔두시는 경우도 있는데, 해킹은 그렇다 쳐도 트래픽이 문제입니다. 보통 봇을 이용해서 무차별 대입 공격을 하는 경우가 많기 때문에 잘못하다간 하루 만에 트래픽이 30GB씩 낭비되는 모습을 보실 수 있습니다... (제가 그랬거든요. 😂) 저는 처음에 Fail2ban을 이용해 로그인에 실패한 아이피는 차단되도록 했는데 공격이 워낙 많아서 감당이 안 되더라고요. 그래서 아예 포트 번호를 바꿔버리는 게 낫겠다는 생각이 들..
[Baekjoon] 18111 - 마인크래프트 (C++) https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 땅을 파거나 집을 지을 수 있는 게임이다. 목재를 충분히 모은 lvalue는 집을 짓기로 하였다. 하지만 고르지 않은 땅에는 집을 지을 수 없기 때문에 땅의 높이를 모두 동일하게 만드는 ‘땅 고르기’ 작업을 해야 한다. lvalue는 세로 N, 가로 M 크기의 집터를 www.acmicpc.net 블록을 설치하거나 제거해서 땅을 평평하게 만들어 줘야 합니다. 블록을 설치할 때는 1초, 제거할 때는 2초가 걸립니다. 땅의 크기..
[Baekjoon] 1966 - 프린터 큐 (C++) https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 www.acmicpc.net 중요도가 높은 문서를 먼저 뽑고, 중요도가 낮은 문서는 맨 뒤로 밀려나는 상황에 특정 문서가 몇 번째로 인쇄되는지 구하는 문제입니다. ..