반응형

전체 글 368

시스템 수준 입출력(I/O)

시스템 수준 입출력(I/O) 입출력(I/O)이라는 동작은 결국 주 메모리와 외부 디바이스 간에 데이터를 주고 받는 동작이다.입력(INPUT)의 경우 외부 디바이스에서 주 메모리로 데이터를 전송하는 과정이고, 출력(OUTPUT)의 경우 주 메모리에서 외부 디바이스로 데이터를 전송하는 과정이다.이런 동작에 대해 알아보기 전에, 우선 알아두어야 할 점은 리눅스는 네트워크, 디스크, 터미널 같은 모든 I/O 디바이스들을 파일로 모델링한 뒤, 모든 입력과 출력을 해당 파일을 읽고 쓰는 방식으로 관리한다는 점이다.즉, 우리의 입출력 역시 일반 파일을 읽고 쓰는 것처럼 관리할 수 있다. 크기가 m인 파일을 읽기위해 현재 파일 위치 k를 증가시킬 때, k>m 인 경우 발생하는 "EOF(end of file)"가 일반 ..

[reversing.kr] Direct3D FPS writeup

[reversing.kr] Direct3D FPS writeup 완전완전쓰 기대하던 문제다. 3D 그래픽을 이용해서 만든 프로그램은 어떻게 되어있을까 굉장히 궁금했는데, 크게 다를 바는 없는 것 같다.아무튼 매번 하던 단순한 텍스트 박스와는 다르게 실제 FPS 게임같은 느낌이 나서 굉장히 재미있게 풀었다.사실 문제는 대충 어떻게 어떻게 풀긴 했지만, 코드 분석을 끝까지는 하지 못했다. 생각보다 크게 어렵지는 않아서 일단 풀이쓰고 나중에 더 하든가 해야겠다. 3D 프로그래밍을 배워서 나도 이런거 만들어보고 싶다.암튼 게임 실행화면은 다음과 같다.(한승연 예쁘다) 몬스터를 총으로 쏴서 없앨 수 있고, 몬스터에 닿으면 데미지가 닳다가 죽는다.클리어 조건이 뭔지는 잘 모르겠는데, 일단 해당 바이너리 내에 존재하..

Write-up 2019.05.16

[codeengn] Basic RCE L01 writeup

[codeengn] Basic RCE L01 writeup 코드엔진 문제를 조금씩 풀어보기로 했다.1번 문제는 옛날에 봤던 abex 문제임HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 코드를 살펴보면 다음과 같다. 0x0401018에서 호출하는 GetDriveTypeA 함수의 리턴 값에 따라서 분기문이 결정되는 것을 알 수 있다. 00401000 >/$ 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL 00401002 |. 68 00204000 PUSH 01.00402000 ; |Title = "abex' 1st crackme" 00401007 |. 68 12204000 PUSH 01.00402012 ; |Text = "M..

Write-up 2019.05.15

[reversing.kr] Replace writeup

[reversing.kr] Replace writeup 딱히 뭘 하라고 정해주지는 않은 문제다.그냥 실행시켜보면 입력 창을 볼 수 있고 숫자를 입력하고 check 버튼을 누르면 특정 동작을 한다.00401171 |. 56 PUSH ESI ; /pModule 00401172 |. FF15 14504000 CALL [] ; \GetModuleHandleA 00401178 |. 50 PUSH EAX 00401179 |. E8 82FEFFFF CALL Replace.00401000 0040117E |. 8945 A0 MOV [EBP-60],EAX 00401181 |. 50 PUSH EAX 00401182 |. E8 95000000 CALL Replace.0040121C 00401187 |. 8B45 EC MOV..

Write-up 2019.05.15

웹 서버 올리기

웹 서버 올리기 게임을 잘 만들었으니 이제 서버에 올려보자.docker로 간단하게 환경을 구성해주기로 했는데, ubuntu에서 apache랑 php 등등을 설치해본적이 없어서 그냥 간단하게 build하고 내부로 attach해서 하나씩 설치해나가기로 했다. 먼저 Dockerfile을 만든 뒤, build한다.$ cat Dockerfile FROM ubuntu:latest RUN apt update RUN useradd -mU web1 WORKDIR /home/web1 ​ $ sudo docker build --tag snake:latest . ...잘 빌드해서 이미지를 생성했다면 이제 container를 생성시켜서 돌린다. 서버의 12361 포트와 연결시켜줄 예정이다.sudo docker run -it -..

Creating Snake Game 2 (in javascript)

Creating Snake Game 2 (in javascript) php랑 mysql을 공부하니 이전에 만들었던 snake game에 rank 시스템을 추가할 수 있을 것 같아, 한 번 만들어보기로 했다. 완성 모습 몇몇 부분이 바뀌었고 새로 추가된 부분도 있다.game.js우선, 게임이 끝나서 점수를 산출해야 하므로, 기존에 끝에 닿으면 다시 처음으로 돌아오는 코드를 없애고 게임이 끝나도록 했으며, 결과 화면을 표시해주는 코드를 추가했다.game() // calculate snake's head location snakeHeadX = snakeBody[snakeLength - 1].x + directionX; snakeHeadY = snakeBody[snakeLength - 1].y + directi..

[php] xss, sql injection 막기

[php] xss, sql injection 막기 내가 하면 꿀잼이지만, 남이 하면 족같은 xss, sql injection을 방지할 수 있는 함수들을 정리한다.출처는 이고잉님의 생활코딩이다. htmlspecialchars("~~~~")html에서 특수한 의미를 갖는 다음의 문자들을 모양은 같고 의미는 다르도록 치환해준다. 삽입된 javascript 문이 실행되는 것을 막을 수 있다.CharacterReplacement& (ampersand)&amp" (double quote)&quot, unless ENT_NOQUOTES is set' (single quote) &#039 (for ENT_HTML401) or &apos (for ENT_XML1, ENT_XHTML or ENT_HTML5), but on..

반응형