분류 전체보기
3장 리틀 엔디언 표기법
먼저 컴퓨터에서 메모리에 데이터를 저장하는 방식에는 리틀 엔디언 표기법, 빅 엔디언 표기법이 있다. 이런 방식을 바이트 오더링 (Byte Ordering)이라고 한다. 이런 코드가 있다고 하자. 총 4개의 크기가 다른 자료형이 있다. TYPE Name SIZE 빅 엔디언 리틀 엔디언 BYTE b 1 [12] [12] WORD w 2 [12][34] [34][12] DWORD dw 4 [12][34][56][78] [78][56][34][12] char [] str 6 [61][62][63][64][65][00] [61][62][63][64][65][00] (아스키 'a' 16진수는 0x61임) 빅 엔디언과 리틀 엔디언은 2바이트 이사의 크기를 가진 자료형을 저장할 때부터 차이가 난다. 빅 엔디언 방식은 ..
2장 Hello, World! 리버싱
11월 21일, 대학교에 합격하였다. 그렇기에 그동안 못했던 공부를 하고 싶었고, 리버싱 핵심원리 책을 통하여 리버싱을 공부하려 하였다. 혼자서 머리속으로 끙끙 앓으며 공부를 하기 보다는, 누군가에게 설명을 하듯이 진행을 하는 방법이 편해 블로그를 통해 공부를 하려 한다. 본격적인 공부에 앞서, 책의 예제파일은 reversecore님의 블로그에서 다운받을 수 있으며, OllyDbg 32bit + Plugin으로 진행한다. 먼저, OllyDbg를 관리자권한으로 실행 후 HelloWorld.exe를 열어보자 Hello, World.exe 디버깅 시작 잘 열렸다. 좌측 상단을 Code Window, 좌측 하단을 Dump Window, 우측 상단을 Register Window, 우측 하단을 Stack Windo..
시저 암호 업그레이드
싲더 시저 암호가 뚫는 법은 암호화된 문장에 1부터 25까지 key값에 대입하여 더 암호화를 진행하는 방법이다. 이것이 먹히는 이유는, 우리는 쉬프팅 연산이 알파벳 순서를 기반으로 한다는것을 알기 때문이다. 따라서 이것을 해커가 모르도록 해야한다. 그래서, 난 파일입출력을 생각하였다. 파일 입출력을 이용하여 영어 대문자, 소문자, 숫자, 특수문자 등등 txt 파일을 만들어서 연산 순서를 그 파일에 저장하는 것이다. 파일 관리는 사용자가 직접 그 파일을 열어서 할 수도 있지만, 프로그램 자체적으로 순서를 섞어버려도 된다. 난 이러한 방법을 이용하였다. #include #include #include #include #include #include #include //Use the bool #include ..
시저암호 프로그래밍 수정
그냥 옛날에 만든 시저암호 프로그램 코드를 보다가 이상한 부분이 있어서 확인을 해봄. 해당 포스팅의 링크 참조 : http://l0rq2.tistory.com/30 문제의 코드는, 바로 이 코드이다. 프로그램에서 암호화와 관련된 코드는 저 코드가 전부인데, 저 코드는 알파벳일때 쉬프트만 해주는 코드이다. 애초에 시저암호 자체가 쉬프팅을 하는코드인데 무슨 문제일까? 바로 해당 프로그램에서는, 암호화를 진행할때 문자에다가 값을 더하는 것이므로, 문자를 아스키 코드로 본다. 아스키 코드 관련 나무위키 글 : https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C 아스키 코드 표 출처 : Microsoft Developer Network 위의 ..
시저암호란? - 시저암호 프로그래밍
안녕하세요~ 오늘은 시저암호에 대해서 알아보고, 프로그래밍까지 해보겠습니돧 시저암호는 카이사르 암호라고도 부릅니다 (고대암호) 시저암호는 간단한 치환암호인데, key값을 받아서(수) 해당 숫자만큼 평문을 쉬프트 해줍니다. 간단하게 그림으로 표현을 해주면, 이런식으로 암호화가 진행된다는 것입니다. 예를들어, 평문이 ABC이고, key값이 3이라면, 3만큼 쉬프트를 해줘서 암호문이 DEF가 나오게 되는것입니다. 문제는 이 암호문 DEF를 26-3 인 23만큼 암호화를 진행해 주면 다시 평문이 나오게 됩니다. 따라서, 취약한 암호체계라고 할 수 있습니다. 하지만, 워게임이나 해킹대회에서는 가끔씩 나오는 문제이기도 합니다. 따라서 제가 주로 시저암호를 암호화, 복호화 하는 사이트를 걸어 놓겠습니다! https:..
gdb run 명령어 권한문제
gdb에서 test파일을 run명령어를 했을때 권한문제로 "Couldn't get registers : 명령이 허용되지 않음." 이라는 오류메세지가 출력되는것을 확인 할 수 있다. 이 문제의 원인은, 1. gdb프로그램의 setuid 문제이다. (내가 겪음.) 주로, gdb파일 권한 가지고 놀다가 chmod명령어를 이용하여 퍼미션을 이상하게 설정해 논 적이 있다. 이때는 chmod 755 /usr/bin/gdb 명령으로 gdb를 원상복귀 해놓을 수 있다. 이때는 root권한이 필요하다. 내가 root라면 이문제를 바로 해결할 수 있지만, root계정이 아니고 gdb프로그램의 문제라고 생각되면 관리자한테 연락해야 한다. (그러나 거의 2번과 같은 문제이다.) 2. 대상 (victim)파일의 권한문제 이다...