5. 방학 활동 (63) 썸네일형 리스트형 [2021.07.26] 포너블팀 나동빈-시스템해킹 강의 정리 # 어셈블리어로 Hello World 출력하기 nano는 대표적인 editor 프로그램. 어셈블리 소스코드를 생성해줌. 어셈블리어 입력 # 레지스터의 용도와 시스템 콜 이해하기 rax는 가장 중요한 레지스터중 하나. 시스템콜의 실질적인 번호를 가리키는 레지스터이자, 함수가 실행이 된 다음에 결과가 담기는 레지스터 rbx 메모리 주소를 지정할 때 사용 rcx 카운터 레지스터로서 반복문에서 많이 사용함 rdx 데이터 레지스터로서 연산을 수행할 때 rax와 함께 많이 사용 rax부터 rdx까지를 데이터 레지스터라고 많이 부름. 이 네 개는 포인터 레지스터라고 부름. 특정한 주소를 가리키는 레지스터 4개를 정의해 놓은 것. rsi 메모리를 이동하거나 비교할 때 출발지 주소를 가리킴 rdi 메모리를 이동하거나 비.. [2021.07.25] 포너블팀 Dreamhack-System hacking 보호되어 있는 글입니다. [2021.07.23] Dreamhack Wargame팀 풀이 보호되어 있는 글입니다. [2021/02/23] bandit wargame Level24 ~ Level31 Level 24 → Level 25 문제 해설) 포트 30002 데몬이 실행 중이고, 이것은 bandit24의 패스워드와 4자리 정수가 주어졌을 때에 bandit25의 패스워드를 제공할 것이다. 핀 코드를 검색하는 방법은 없고, brute-forcing을 통해 10000가지의 경우의 수를 알아보아야한다. 문제 풀이) 브루트 포스란, 문제를 해결하기 위해 가능한 모든 경우의 수를 실행시키는 방법이다. 우선 shell.sh라는 셀 스크립트를 작성한다. 코드는 이렇게 짠다. for문을 이용해 [try : 정수]의 형태로 0부터 9999까지의 정수들이 출력되고, [패스워드] [핀 코드(정수)] 형태의 문자열이 result.txt 파일에 복사되는 코드이다. shell.sh를 실행시키면 다음과 같다. [try : .. [2021/02/20] bandit wargame Level19 ~ Level23 Level19 → Level20 다음 레벨에 액세스하려면 홈 디렉토리에있는 setuid 바이너리를 사용해야합니다. 사용 방법을 찾으려면 인수없이 실행하십시오. 이 레벨의 비밀번호는 setuid 바이너리를 사용한 후 일반적인 위치 (/ etc / bandit_pass)에서 찾을 수 있습니다. $ ls $ ls -al ./bandit20-do $ ./bandit20-do id uid = 11019(bandit19) gid = 11019(bandit19) euid=11020(bandit20) groups=11019(bandit19) bandit20의 권한으로 실행이 되는 프로그램이다. $ ls /etc/bandit_pass/bandit* $ ls /etc/bandit_pass/bandit20 $cat /etc.. [2021/02/18] bandit wargame Level14 ~ Level18 level14 → level15 포트번호가 30000인 localhost에 현재 계정의 비밀번호를 전송하면 다음 레벨의 비밀번호를 얻을 수 있다. nc명령어를 이용하여 포트번호가 30000인 localhost에 접속한다. nc localhost 30000 level15 → level16 level16 → level17 문제 해설) 다음 레벨에 로그인할 자격은 현재 레벨의 패스워드를 localhost의 포트 31000과 32000 사이에 보내면 얻을 수 있다. 우선 이 포드들에 어떤 서버가 반응해주는 지에 대해 알아내라. 그리고 어떤 것이 SSL을 말하고 어떤 것이 그렇지 않은 지를 찾아내라. 다음 자격을 주는 서버는 오직 1개이고, 다른 것들은 단순히 당신이 입력한 것을 출력할 것이다. $nmap loc.. [2021/02/16] bandit wargame Level9 ~ Level13 level9 → level10 data.txt 파일 내부에 몇개의 읽을 수 있는 ‘=’문자로 시작하는 문장중 하나라고 한다. data.txt 를 file명령어를 사용하여 확인하면 data파일이라는 것을 알 수 있다. cat 명령어를 이용해서 이 파일을 확인해 보면 읽을 수 없는 파일이 나온다. strings 명령어를 이용하여 문자열을 추출하여 출력시킨다. 그러면 우리가 읽을 수 없는 기호들은 사라지고 읽을 수 있는 문자열만 출력된다. 그리고 grep명령어를 사용해서 우리가 원하는 ‘=’문자가 있는 라인만 찾아보자 strings data.txt | grep = 명령어를 이용하면 패스워드를 획득할 수 있다! level10 → level11 다음 레벨의 패스워드는 base64로 인코딩된 데이터를 포함하고 있는.. [2021/02/11] bandit wargame Level4 ~ Level8 level4 → level5 inhere디렉토리 안에있는 사람이 읽을 수있는 파일에 패스워드가 들어있다는 문제이다. 일단 ls -al 명령을 사용하여 파일들을 확인해본다. 그리고 inhere 디렉토리에 들어가 이 디렉토리 안에 들어 있는 파일들을 확인해 본다. 사람이 읽을 수있는 파일을 찾기위해 file명령어를 통해 파일 형식을 확인해 본다. (file ./*) 그러면 -file07파일이 ASCII 텍스트 파일인 것을 확인 할 수있다. cat을 이용해 -file07파일을 확인해 패스워드를 획득하면 된다! (cat ./-file07) level5 → level6 비밀번호가 inhere 디렉터리 어딘가의 파일에 저장되어 있다고 하는데, 그 파일은 사람이 읽을 수 있으며, 1033 byte의 크기를 가지고, .. 이전 1 ··· 4 5 6 7 8 다음