[ Register ] 범용 레지스터 종류 & 범용 레지스터 역할
·
Archive/Hacking
레지스터? CPU 내부에서 사용되는 고속의 기억 장치. CPU는 연산을 위해 메모리에 있는 데이터들을 레지스터로 옮깁니다. 연산을 하는 도중에도 연산 결과를 레지스터에 저장합니다. 인텔 x86 CPU 에서는 9개의 범용 레지스터를 제공하고 있습니다. 오늘 포스팅은 그 9개의 범용레지스터의 종류와, 각각의 레지스터가 어떤 임무를 부여받았는지에 대한 포스팅입니다. 레지스터 종류 EAX (Extended Accumulator Register) - 산술 연산 레지스터로, 곱셈과 나눗셈 명령에서 사용하고 함수의 return 값을 저장합니다. EBX (Extended Base Register) - 산술 연산 레지스터로, ESI나 EDI와 합쳐져 인덱스에 사용됩니다. ECX (Extended Counter Regis..
[ Pwnable ] pwnable.kr 1번 fd 풀이
·
Archive/Hacking
http://pwnable.kr/play.php http://pwnable.kr/play.php pwnable.kr 시스템해킹을 하시는 분들이라면 한번쯤 들어봤고, 풀어봤을 법한 pwnable.kr 사이트의 첫번째 문제입니다. fd 를 클릭하면 이러한 창이 뜹니다. 리눅스에서 파일디스크립터가 무엇인지를 묻는 문제입니다. 아래쪽을 보니 Flag를 찾아 넣고 auth 버튼을 누르면 되겠네요. Pwnable.kr 접속하기 우선 접속을 해봅시다. 가상머신에 있는 리눅스를 켜서 터미널 창 열고 ssh fd@pwnable.kr -p2222 치고 들어가도 되지만, 저는 그냥 putty로 접속하도록 하겠습니다. 아래와 같이 설정해주고, Open! password 는 guest password 까지 치고 들어가면 완료!..
[ Assemble ] 어셈블리 곱셈(mul)/ 나눗셈(div) 연산 실습(1byte)
·
Archive/Hacking
SASM 환경에서 진행합니다. Assemble 곱셈 실습 어셈블리어에서의 곱셈/나눗셈은 덧셈, 뺄셈보다 조금 복잡합니다. 이번 포스팅은 1byte 곱셈 / 1byte 나눗셈만 다뤄보겠습니다. 우선, AX 라는 레지스터는 AH 와 AL 로 나눌 수 있습니다. 이걸 알고 넘어가야 이해할 수 있습니다. AX AH AL 곱셈의 형식은 이러합니다. mul 파라미터 우리가 아는 곱셈의 형식은 피연산자가 2개인, A*B 의 형태입니다. 하지만 어셈블리어에서는 마치 피연산자가 1개인 것 처럼 보입니다. 핵심만 말하겠습니다. mul 뒤에 붙는 파라미터 값은 AL 과 곱해져 AL에 저장됩니다. AL에 저장된다는 것은, AX에서도 그 값을 볼 수 있다는 말입니다. 말로는 조금 어려우니, 코드로 볼까요? ax에 0이 들어있는..
[ Assemble ] 어셈블리어 덧셈(add)/뺄셈(sub) 실습
·
Archive/Hacking
SASM 환경에서 진행합니다. Assemble 더하기 연산 우선 레지스터끼리의 더하기 연산 실습을 해봅시다! 그림은 eax 에는 1을, ebx에는 6을 복사한 뒤 add를 이용해서 eax와 ebx를 더한 값을 eax에 넣는 코드입니다. add 파라미터1, 파라미터2 의 형식으로 덧셈을 진행합니다. 이는 c언어등의 다른 언어에서 파라미터1 = 파라미터1 + 파라미터2 와 동일한 기능을 합니다. 결과 값을 예측해보세요. 어떻게 될 것 같나요? 네. 7이 나옵니다. 이제 변수를 선언해서 덧셈 연산을 해봅시다. 자. 여기서 문제 하나 드리겠습니다. 위 그림의 코드는 정상적으로 실행이 가능할까요? 에러가 난다면, 어떤 라인을 어떻게 바꿔야 할까요? 덧셈과 뺄셈 등의 연산에서, 같은 메모리 변수는 더하거나 뺄 수 ..