일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- #MINT64 #Sqix
- #Best of the Best #OS #MINT64 #Sqix
- libpcap
- command
- #Qt Creator
- vi
- linux
- C++11
- #
- Overwatch League SaberMetrics
- BEST of the BEST
- KASAN
- #IntelManual #segment Descriptor #세그먼트 디스크립터 #MINT64 #Sqix
- 오버워치 세이버메트릭스
- Network
- ftz
- FTZ 레벨2
- vi 외부 명령어
- 오버워치
- 인터럽트
- libtins
- Sqix
- Find
- #IntelManual
- vim
- >
- Today
- Total
목록Wargame (31)
Sqix
hint /bin/level7 명령을 실행하면 패스워드 입력을 요청한다 1. 패스워드는 가까운곳에..2. 상상력을 총동원하라.3. 2진수를 10진수로 바꿀 수 있는가?4. 계산기 설정을 공학용으로 바꾸어라. 일단 objdump, gdb 전부 못 켜게 permission을 710으로 해 놨네요. rwx--x--- 그런데 파일 혹은 디렉토리가 없다고 나타나고, 바로 종료됩니다. 당황스럽네요. 아무것도 주어지지 않고 브루트 포싱으로 풀어야 하나.. 아무래도 저 파일이 없으면 문제를 못 풀 것 같은데, /bin 디렉토리에는 root 권한으로만 r/w 권한을 사용할 수 있기 때문에 다른 방법을 찾아야 할 것 같습니다. 정리하면, level7은 디버깅도 안 되고, odjdump 역시 사용할 수 없고, 비밀번호를 입..
Level6에 접속하여 들어갑니다. =================================================hint - 인포샵 bbs의 텔넷 접속 메뉴에서 많이 사용되던 해킹 방법이다. 메뉴 텔넷 접속 서비스 1 . 하이텔 2. 나우누리 3. 천리안================================================= 위와 같이 1,2,3 어떤 메뉴를 들어가더라도, Connection Refused라는 텔넷 에러 메세지와 함께 연결이 종료됩니다. 혹시나 해서 저 메뉴 입력 상태에서 bash 쉘의 명령어들을 쳐 보았지만 바로 프로그램이 종료됩니다. input 화이트리스트 검사를 하는지 테스트를 하기 위해서 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA..
힌트는 다음과 같습니다. /usr/bin/level5 프로그램은 /tmp 디렉토리에 level5.tmp라는 이름의 임시 파일을 생성한다. 이를 이용하여 level6의 권한을 얻어라. 일단 level5 파일이 어떤 것인지 확인해 보았습니다 level6 권한으로 setuid가 걸려 있고, level5 권한에서는 실행만 가능합니다. 디버깅은 불가능한 상태입니다. GDB가 안 붙네요.(permission denied) tmp 파일을 이용한 취약점 공격은 주로 race-condition이라고 하니, race-condition에 대해서 미리 공부를 해야 할 필요가 있습니다. Race Condition은 임시 파일이 존재할 시, 이를 삭제하는 과정에서의 시간차로 발생하는 취약점입니다. 임시 파일이 만약 존재하면, 다..
힌트는 "누군가 /etc/xinetd.d/에 백도어를 심어놓았다.!" 입니다. 디렉토리에 들어가 보니 level4 권한을 달고 있는 backdoor가 있네요. file 명령어로 backdoor를 확인하여 보니, ASCII text (일반 텍스트 문서)라고 합니다. cat하여 보니 다음과 같은 설정이 나오네요. level5의 권한을 가지고 있고, /home/level4/tmp/backdoor에 실행 서버가 있다고 합니다. 사실 이건 xinetd(internet daemon) 디렉토리이고, 이 파일은 finger 서비스의 정보입니다. 즉, finger 서비스를 실행하면 level5권한으로 /home/level4/tmp/backdoor 파일을 실행한다는 것입니다. 하지만 아무것도 없네요. 여기다 backdoo..
깨진 한글 부분만 따로 검색했습니다. 다음 코드는 autodig의 소스코드이다. /* 소스 코드 */ 이를 이용하여 level4의 권한을 얻어라. more hints. - 동시에 여러 명령어를 사용하려면?- 문자열 형태로 명령어를 전달하려면? 문자열 형태로 명령어를 전달하려면, " "를 달아주어 파라미터로 전달하면 됩니다. 또한, 동시에 여러 명령어를 사용하려면 ; (앞의 명령어의 성공 유무와 상관없이 실행), & (앞의 명령어가 성공하면 실행), && (명령 동시에 실행. 앞의 명령은 백그라운드로 실행됨)을 씁니다. 코드를 대충 둘러봐도 위험한 요소가 몇 개 보이네요. strcpy, strcat 함수를 사용했는데, 해당 함수는 memory boundary 검사를 안 해서 BOF 취약점이 발생하는 함수입..
FTZ level2로 진입합니다. hint는 "텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데..." 입니다. 아무래도 기본적으로 설치되어 있는 텍스트 에디터는 vi일 테니, vi 관련 문제인 듯 합니다. vi에서 외부 명령어를 사용하는 방법으로는, 두 가지가 있습니다. vi를 실행하고 esc를 눌러서 명령어를 실행시킬 수 있도록 합니다. 쉘 실행 :sh vi로 돌아오기 ctrl + d vi에서 명령어 실행 :! {commands} 실행 명령어의 결과 가져오기 :r!ls -al level2 계정으로 로그인을 해서, level3으로 setuid가 걸린 파일이 있나 찾아보았습니다. /usr/bin에 있어서 찾아보았습니다. 실행 권한까지 있네요. 열어 보니, vim editor를 그냥 실행하면 ($ v..
Level 1번 문제를 풀기 위해 ssh로 진입합니다. ls 명령어를 이용해 어떤 파일이 있는지를 체크해 봅니다. hint가 있으니 hint를 보도록 합시다. 한글이 깨져서 나오는데, 인코딩 문제로 보여서 힌트는 따로 찾아보았습니다. 힌트는 다음과 같습니다. level2 권한에 setuid가 걸린 파일을 찾는다. 처음에 삽질을 하다가 find의 -perm옵션을 이용한다면 손쉽게 찾을 수 있다는 것을 알아냈습니다. 이에 대해서는 따로 정리를 해 두었습니다. setuid는 특수 권한으로, root 권한에서만 접근할 수 있는 파일 혹은 커맨드에 대해서 일반 user가 사용할 수 있도록 하는 권한입니다. 이는 permission을 나타내는, 예를 들어 755와 같은 숫자들 앞에 특수 권한을 나타내는 비트를 추가..
이번에는 pwnable.kr - flag 문제를 풀어보는 시간을 갖겠습니다. 처음 문제를 켜면 http://pwnable.kr/bin/flag를 다운로드 받으라고 합니다. 마찬가지로 wget을 통해서 다운로드 받고, gdb를 이용할 수 있도록 chmod 775를 하여 권한을 올려 주도록 하겠습니다. 리버싱 문제이기 때문에, 문자열이 어떤 것이 있는지를 확인해 보고자 strings flag 명령어를 이용하여 문자열을 추출해 보았습니다. strings flag > flag_str.txt와 같은 식으로 파일로 문자열 추출 결과를 넘겨받으면 편리합니다. 그런데, 뒤져 보니 저렇게 upx로 패킹되어있음이 나옵니다. 만약 upx가 없으시다면 apt-get install upx 명령어를 통해 다운로드 받으시면 됩니다..
이번에는 Pwnable.kr의 bof 문제를 풀어보도록 하겠습니다. http://pwnable.kr/bin/bof , http://pwnable.kr/bin/bof.c 를 다운로드 받아서 문제 풀이에 이용할 수 있도록 해 주었습니다. 저는 wget으로 다운로드를 받아서 문제를 풀어보도록 하겠습니다. ex.py는 문제 풀이를 위한 exploit 코드를 파이썬으로 작성한 것인데, 굳이 ex를 짤 필요는 없기 때문에 이번 풀이 과정에서는 생략하도록 하겠습니다. 먼저 코드를 보도록 하겠습니다. main에서는 0xdeadbeef 라는 인자를 func에 넣어 주고, func에서는 해당 값을 인자로 받아와 key로 사용을 합니다. gets 함수는 32바이트의 버퍼인 overflowme 배열에 유저 입력을 받을 수 있..
ssh col@pwnable.kr -p2222 / guest 를 입력하여 문제 서버에 접속한다. 이번 Hash Collision 문제풀이를 시작해 보겠습니다. 문제를 간단하게 요약하면, col.c에 있는 hashcode를 이용해서 알맞은 passcode를 찾아내는 것입니다. 먼저 hashcode가 적혀있는 소스코드를 보도록 하겠습니다. arvg1에 passcode를 가져오고, 이를 check_password 함수의 인자로 넣어서 hashcode와 비교한 후, 만약 그 값이 같다면 flag에 있는 flag를 가져오도록 syscall을 합니다. 틀리다면 wrong password라고 출력을 합니다. password를 보면, 우리가 입력한 문자열을 int * 타입으로 캐스팅하여 5개의 배열인 것 처럼 만들어 ..