일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- dns
- pycrpytodome
- dreamhack
- shellcode
- Franklin-Reiter Related Message Attack
- Montgomery Reduction
- RSA
- cryptography
- OverTheWire Bandit Level 1 → Level 2
- 웹해킹
- Hastad
- return address overflow
- 암호학
- 드림핵
- redirect
- RSA Common Modulas Attack
- bandit
- overthewire
- CSRF
- Crypto
- picoCTF
- Bandit Level 1 → Level 2
- XSS
- rao
- AES
- arp
- spoofing
- 시스템해킹
- weak key
- Cube Root Attack
- Today
- Total
목록OverTheWire: Bandit (13)
암호(수학) 등.. 공부한 거 잊을거 같아서 만든 블로그
문제 다음 단계의 암호는 모든 소문자(a-z)와 대문자(A-Z)가 13개 위치만큼 회전된 data.txt 파일에 저장됩니다. 풀이 data.txt의 내용을 확인해보니 문자열들이 나온것을 볼 수 있다. 근데 문제에서는 data.txt파일에 저장된 문자열이 암호의 문자열을 13번째 다음의 알파벳으로 바뀌어 저장한 것임을 알 수 있다. 이러한 암호화 방식을 카이사르암호라고 한다. (카이사르 암호는 특정 키 값을 각 문자에 더한 값만큼의 문자로 만드는 것이다.) 리눅스의 tr명령어는 문자를 지우거나 바꿔주는 명령어이다. 이 명령어를 이용하여 data.txt의 문자열의 각각의 문자들을 13번째 옆의 문자로 바꾸면 암호가 나올것이다. 옵션이 없는 경우 set1의 문자열을 set2로 바꿔주며 abcdef의 경우 a-..
문제 다음 단계의 암호는 base64 인코딩된 데이터를 포함하는 data.txt 파일에 저장됩니다. 풀이 data.txt파일의 내용을 보니 VGhlIHBhc3N3b3JkIGlzIElGdWt3S0dzRlc4TU9xM0lSRnFyeEUxaHhUTkViVVBSCg== 문자열이 있음을 알 수 있다. 문제에서 암호는 base64 인코딩된 데이터로 data.txt에 저장되어 있다고 했으므로 base64 명령어를 이용해 VGhlIHBhc3N3b3JkIGlzIElGdWt3S0dzRlc4TU9xM0lSRnFyeEUxaHhUTkViVVBSCg== 문자열을 base64 디코딩을 해보면 암호가 IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR 임을 알 수 있다. base64 명령어는 base64 인코딩, 디코딩을 해..
문제 다음 단계의 암호는 몇 개의 '=' 문자 앞에 있는 몇 개의 사용자 입력 문자열 중 하나로 data.txt 파일에 저장됩니다. 풀이 data.txt의 내용을 확인하니 파일의 내용이 이상하게 출력되는 것을 보아 바이너리 파일임을 알 수 있다. strings 명령어는 실행파일의 ASCII 값을 찾아 출력해주는 명령어이다. strings [OPTION] [FILE] strings data.txt를 해보면 data.txt의 내용중 문자열로 변환이 가능한 값들이 출력되어 나오는 것을 볼 수 있다. 내용이 많아서 일일이 찾기에는 시간이 걸린다. 문제에서 몇 개의 =문자 앞에 암호가 있다고 했으므로 파이프와 grep 명령어를 이용하여 =이 여러개 있는 문자열들을 검색하면 truKLdjsbJ5g7yyJ2X2R0o..
문제 다음 단계의 암호는 data.txt 파일에 저장되며 한 번만 발생하는 유일한 텍스트 행입니다. 풀이 cat명령어를 통해 data.txt의 내용을 확인해보니 문자열이 한줄마다 하나씩 있는 것을 볼 수 있다. 문제에서 암호는 파일의 문자열중 중복되지 않는 유일한 문자열 이라고 했으므로 uniq명령어와 파이프를 이용하여 명령어를 입력해 봤는데 전과 차이가 없다. cat data.txt | uniq -c 에서 | 는 파이프라고 하는 것인데 cat data.txt의 출력 값을 uniq 명령어의 입력으로 넣으라는 의미이다. ( a | b : a의 출력 값을 b의 입력으로 ) uniq 명령어는 중복된 문자열을 제거해주는 명령어이다. -c 옵션은 중복된 횟수를 나타내어 출력해준다. uniq [OPTION] [ I..
문제 다음 단계의 암호는 data.txt 파일안에 millionth 옆에 저장됩니다. 풀이 ls를 통해 현제 디렉터리에 data.txt 가 있음을 확인 했다. cat data.txt를 하니 매우 많은 문자들이 출력된다. 여기서 일일이 찾아서 암호를 찾는 것은 거의 불가능하기 때문에 문제에서 millionth 옆에 암호가 저장되어 있음을 알려준 것을 활용해보자. grep 명령어는 입력한 패턴에 일치하는 내용을 파일에서 찾아주는 명령어다. 사용법은 다음과 같다 grep [OPTIONS] PATTERN [FILE...] grep을 통하여 data.txt 파일의 millionth단어를 검색해 보려면은 grep millionth data.txt을 입력 해야한다. 입력을 해보니 위의 사진처럼 millionth 오른..
문제 다음 단계의 암호는 서버의 어딘가에 저장되며 다음 모든 속성을 가집니다. owned by user bandit7 owned by group bandit6 33 bytes in size 풀이 find 명령어를 사용하여 최상위 디렉터리인 / 에서 부터 유저가 bandit7, 그룹이 bandit6, 크기가 33바이트인 파일을 찾아보면 많은 파일이 검색되지만 대부분의 파일은 허가를 거부한다는 에러 메세지가 나온다. 이 에러값들을 /dev/null 에다가 버려서 제대로 된 출력 결과만 보려고 find / -size 33c -user bandit7 -group bandit6 2> /dev/null 을 입력하면 에러들은 버려지고 정상적인 결과들만 출력된다. 따라서 find 명령의 결과인 /var/lib/dpkg..
문제 다음 단계의 암호는 inhere 디렉토리 아래의 파일에 저장되며 다음 속성을 모두 가집니다. human-readable 1033 bytes in size not executable 풀이 inhere 디렉터리의 파일을 확인해보니 디렉터리의 수가 많이 있다는 것을 볼 수 있다. 디렉터리가 많아 일일이 확인할려면 오래 걸리니 find 명령어를 이용하여 찾으면 된다. 문제에서 준 조건중 암호가 들어있는 파일의 사이즈가 1033바이트임을 알려주었으므로 find의 옵션중 -size를 이용하여 1033바이트의 크기를 가진 파일을 검색한다. 1033c에서 c는 바이트임을 나타내는 기호다. find ./ -size 1033c를 입력하여 현재 디렉터리 하위에 있는 1033바이트의 파일을 찾아보면 ./maybehere..
문제 다음 단계의 암호는 inhere 디렉토리에서 사람이 읽을 수 있는 유일한 파일에 저장됩니다. 팁: 단말기가 고장 나면 "reset" 명령을 사용해 보십시오. 풀이 inhere 디렉터리에 파일들을 확인해보니 10개의 파일이 있는 것을 확인할 수 있다. 이중에서 -file00의 내용을 확인해보면 이상한 문자가 나오는데 file 명령어를 이용하여 파일의 타입을 확인해보면 data타입인 것을 확인 할 수 있다. 임의의 문자열을 가리키는 특수문자인 * 문자를 사용하여 file ./* 를 해보면 inhere 디렉터리에 있는 모든 파일의 타입이 출력된다. 이중에서 우리가 찾는 파일은 암호가 저장되어 있는 파일이기 때문에 ASCII 형식으로 된 파일을 찾아보면 -file07 파일이 암호가 들어있는 파일임을 알 수..