본문 바로가기

전체보기

Sublime Text2 정품 등록 / Sublime text2 lisence Sublime Text2를 사용하다 보면 하루에 한 번은 정품등록을 권유하는 메시지가 뜨지만 이용에 제한이 있지는 않습니다. 이정도 프로그램이면 '$59주고 살만하네' 싶기도 하지만 외국 포럼에서 정품등록 방법을 찾아서 적용해봤습니다. 1. Sublime text2가 설치된 폴더로 가셔서 실행 파일을 hex editor로 연 뒤 다음 값을 찾습니다. ### 32bit 운영체제의 경우 ### 5BE509C33B020111 -> 5BE509C32B020111 ### 64bit 운영체제의 경우 ### 33 42 -> 32 42 여러 값이 나오지만 처음 검색되는 값 하나만 변경하시면 됩니다. 2. 이후 Sublime Text2 -> help -> Enter License 에 다음 값을 입력합니다. —– —– B.. 더보기
Sublime Text2 환경설정 Sublime Text2는 장점으로 꼽히는 다양한 내장함수들을 이용해서 자신만의 코딩환경을 구축할 수 있는데요. 대부분 많이 쓰고있으며 현재 제가 사용하고 있는 설정입니다. 개인 설정은 다음 위치에서 설정하실 수 있습니다. Preferences -> Settings - user 옆에 주석도 달아놨으니 각자 원하는 설정으로 수정해서 사용하세요 = ) 드래그 불가능으로 파일도 올려드립니다. {"bold_folder_labels": true,//사이드바 폴더 라벨"caret_style": "phase",//커서 깜빡임(blink/phase/smooth/solid/wide)"color_scheme": "Packages/Color Scheme - Default/Twilight.tmTheme","fade_fold_.. 더보기
Sublime Text2 설치 이번에 python으로 프로그래밍을 하다보니 쓸만한 텍스트 에디터가 필요하다는 생각이 들었습니다. python의 IDLE로는 부족함을 느끼던 참에 Sublime Text 라는 프로그램을 찾게 되었는데요. 쓰면 쓸 수록 편리한 프로그램이네요. 일단 UI 깔끔하고 다중 선택으로 여러 단어를 한번에 수정도 가능하고 줄 단위 이동, 삭제도 편합니다. 세로 2, 3, 4 분할 / 가로 분할 등 다양한 Layout을 지원하고 기본적으로 C++ / D / Erlang / Haskell / Ant / Java C / Make / Python / Ruby 의 빌드가 가능합니다. 설치는 아래 링크에서 지원하며 Portable 버전도 있습니다. 현재 3가 최신 버전이지만 2를 많이 쓰는 분위기네요 = ) Sublime Te.. 더보기
리눅스에서 명령어를 못찾을 경우 리눅스 명령어를 못 찾을 경우 다음과 같은 명령어로 찾아볼 수 있다. find / -name ***** *****에는 찾고자 하는 명령어를 검색하면 되며 대게 /sbin 폴더안에서 찾을 수 있다. 해당 명령을 PATH에 등록시켜 사용해야하므로 env 명령어로 현재 등록되어 있는 환경변수 목록에서 PATH 항목을 찾아본다 현재 PATH항목 부분을 복사해둔 뒤 다음 명령어로 수정해서 추가시켜준다. export PATH=기존에 있던 PATH항목들:/sbin PATH의 각 항목들은 : (콜론)으로 구분해줄 수 있다. 더보기
어셈블리 명령어 상세 - 명령어의 분류 어셈블리 명령어 상세 - 명령어의 분류 ① 데이터 이동 : mov, lea ② 논리, 연산 : add, sub, inc, dec ③ 흐름제어 : cmp,jmp ④ 프로시져 : call, ret ⑤ 스택조작 : push, pop ⑥ 인터럽트 : int 1) 데이터 이동 1. mov (move data) - 형식 : mov SOURCE, DESTINATION - 기능 : SOURCE위치에 들어있는 데이터를 복사하여 DESTINATION위치에 저장. - 원칙 : 메모리와 레지스터(모든 연산은 레지스터에 저장된뒤 이루어진다.) 사이의 데이터이동, 레지스터와 레지스터 사이의 데이터 이동이나 값을 메모리나 레지스터에 대입할 때 사용한다. (SOURCE와 DESTINATION의 크기가 동일해야 한다.) # DESTI.. 더보기
해커스쿨 Level17 Hackershcool level17 = ) 해커스쿨 FTZ 레벨17 [BOF] #include void printit() { printf("Hello there!\n"); } main() { int crap; void (*call)()=printit; char buf[20]; fgets(buf,48,stdin); setreuid(3098,3098); call(); } 17번 문제의 소스를 보면 fgets에 취약점이 존재하고 setreuid로 권한상승이 이뤄지고 있다. 0x080484a8 :push%ebp 0x080484a9 :mov%esp,%ebp 0x080484ab :sub$0x38,%esp 0x080484ae :movl$0x8048490,0xfffffff0(%ebp) 0x080484b5 :sub$0.. 더보기
해커스쿨 Level16 Hackershcool level16 = ) 해커스쿨 FTZ 레벨16 [BOF] 코드를 살펴보면 일단 쉘을 실행하는 함수와 printit이라는 함수가 있고 크기가 20인 배열과 취약점이 있는 fgets함수가 있다. 프로그램을 실행시켜보니 깔끔하게 printit함수를 출력시키고 끝나버린다. 하지만 printit함수가 아닌 shell함수의 주소가 들어간다면 쉘이 떨어지게 될 것이다. 메인함수에서는 아까와 같이 56byte의 공간을 할당해주고 있으며 ebp-16지점에서 eax에 값을 넣는 것을 볼 수 있는데 eax의 값에서 어떤 함수를 call해주고 있는 것을 볼 수 있다. 어떤 함수인지 알아보기 위해 main+39에 브레이크포인트를 걸고 eax의 값을 확인해보았다. eax의 값은 0x8048500 주소에 있.. 더보기
해커스쿨 Level15 Hackershcool level15 = ) 해커스쿨 FTZ 레벨15 [BOF] 15번 문제는 14번 문제와 비슷하지만 check 변수에서 포인터를 이용하고 있다는 점이 다르다. 전체적으로는 14번문제와 비슷하지만 포인터를 사용하고 있기 때문에 이번에는 0xdeadbeef란 문자열 대신 0xdeadbeef를 가리키는 주소를 넣어주면 된다. 버퍼 중간에 deadbeef란 문자열을 넣어주고 ebp-16부분에 이 문자열을 가리키는 주소를 넣으면 되는것이다. main+32에서 브레이크 포인트를 걸고 입력한 값들이 어디에 저장되는지 찾아보니 0xbffffae0에 값이 들어가는 것을 알 수 있다. 이 부분에 deadbeef라는 값이 들어가게 되고 ebp-16되는 지점에서는 이 부분을 가리켜주면 되는 것이다. 문제 .. 더보기