일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 생활코딩
- ftz
- blkls
- Multimedia
- 정보처리기사 필기 합격
- Window process
- memory
- 윈도우 프로세스
- 2022시작
- 디지털포렌식
- 디지털포렌식 with CTF
- ZIP 파일구조
- 네트워크 보안
- 실기
- disk
- 네트워크관리사2급
- 24시간의 전사
- 윈도우 프로세스 종류
- 슬퍼유
- slack space
- Multimeida
- network
- html
- 포렌식
- 생활코딩 html
- 는 하지마...
- vinetto
- CTF-D
- pythonchallenge
- N0Named
- Today
- Total
목록challenge (119)
ssoL2 TISTORY
문제 : 없음.. ? ㄹㅇ 없음 아, 제목이 유일한 힌트이다. 알집안에 데이터 하나 존재한다. 패킷로그분석하면서 알집을 찾아야하는듯 Wireshark로 오픈하니 FTP 프로토콜이 대부분이다. 고로 알집으로 파일 전송하는 패킷이 있을 것이다. FTP 서버 연결해서 TLS와 SSL 보안 연결 요청을 했지만 응답으로 AUTH not understood 오류가 난다. 보안 연결을 못한 상황이다. 그 다음 로그인도 성공적으로 했다. FTP 서버에서 PWD 명령어를 사용하고 해당 결과값이다. 이후 끊기고 다시 한번 연결하는 모양이다. 앞 과정을 한번 더 시행한다. CWD 명령어로 /html 파일로 현재 주소를 옮긴다. 이후 STOR 명령어로 flag.zip 파일을 FTP 서버로 전송하는 것, 즉 파일을 업로드한다...
문제 : 게시판에 불법 게시물이 올라왔다 삭제됐다. 범인의 id와 pw를 찾고 글의 내용도 조사하라. boad.pcapng를 분석하기 위해 Wireshark를 사용하자. 삭제한 내용을 살펴보려고 맨 뒤에 쌓인 패킷부터 살펴봤다. 언뜻 보니 HTTP 프로토콜로 delete_done과 관련된 URL을 요청한다. 패킷의 추가 데이터는 존재하지 않아 위로 올라가자. 삭제 이전에 작성한 내용이 있을 것이다. view도 있고 list도 있고 게시글 작성과 관련된 url write_chk.php를 발견했다. HTTP 프로토콜 POST 메소드로 데이터를 전송하여 게시물을 작성했다. HTML 양식의 컨텐츠 내용은 제목이 "flag 판매합니다"라는 게시물이며 내용을 보니 이전에 삭제한 경험이 있고, 이 문제의 flag 값..
문제 : 인형을 열어라 ! bing.png 사진은 러시아의 마트료시카 인형으로 보이고 계속 안의 내용물을 손으로 꺼내는 모습이다. 여기서 계속 꺼내는, 즉 extract할 상황이 생길 것이다 암시 ! HxD로 분석했을 때 IEND 청크 뒤에 쓰레기값으로 PASS:1234 string이 있다. 따라서 1234라는 패스워드를 가지고 extract하면 되겠다. Openstego 응용프로그램을 사용해 extract 과정을 합시다. medium.png가 추출됐고 파일이름이 big.png->medium.png로 향하는 것을 보면 작은 인형도 존재할 것이다. 한번 더 openstego 돌려보니 역시나 small.png가 들어있다. 마지막으로 한번 더 돌려보자. 인형 깊숙한 곳에 있던 flag.txt가 발견됐고 fla..
풀이 내용 적기 전에 마지막에 너무 허무하게 풀리긴 했는데 진짜..............파일 구조 다 따지면서 몇시간동안 봤는데 아무 쓰잘데기 없는 짓이었다니... 진짜 허무하다,,,,,,,,,,,,,,,,,,,,,ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 흐그흐흐그ㅡ흑 QR코드 등장 => QR코드를 읽을 일이 있을 것이다 예상했어야해..!ㅠ.ㅠ;; PNG 파일 HxD로 살펴보면 footer signiture 뒤에 쓰레기 데이터 쌓여있음 그거 따로 빼서 살펴보니 50 4B 03 04로 시작함 => ZIP 파일이다 ! 압축 파일 압출 해제하고 내용물 봐봅시다. answ 파일 존재해서 텍스트 파일로 열어보니 flag} 라는 문구 등장 오른쪽 중괄호만 있는 것 보니 다른 플래그도 찾아내야 하는 상황 아까 QR코드 였으니까 S..
문제 : Left Side B 자체가 힌트... B 왼쪽에 뭐가 있단 뜻인가..흠(?) b.zip을 압축해제 후 task.bmp 파일 발견. bmp라면.........................LSB 변조? HxD로 살펴봅시다. bmp 파일 헤더에서 형광펜 쳐놓은 8A 00 00 00은 실질 데이터 픽셀의 시작 offset이다. 리틀인디언으로 0000008A 주소로 가보면 픽셀데이터가 시작된다. 픽셀 데이터 시작 부분부터 형광펜 친 부분 전체가 FF와 FE로 번갈아서 나오는데 딱보니까 LSB 변조처럼 보인다 ㅇㅇ 왜냐면 bmp 사진엔 흰색바탕만 있는데 FF 대신 굳이 FE ? 그래서 그 변조 부분들만 골라서 더러운 파이썬 실력으로 대충 짜서 FE는 0으로 FF는 1로 치환하고 8개씩 묶어서 ASCII로..
level16 / about to cause mass hint를 봅시다. main 함수를 보면 call 함수 포인터 선언하고 buf bof 일으켜서 printit 가리키던 것을 shell로 덮으면 되는 문제이다. 찾아야 하는 건 buf 위치, call 위치, shell 주소 이렇게 3 가지 찾으면 되겠습니다~ 처음으로 c 코드 있어서 보려했더만 접근이 안되는구만,,^^; gdb로 살펴보겠습니당~ mov 어셈블리에서 주소를 ebp-16에 넣는 걸 보면 ebp-16이 call 함수 위치네유~ 이후 fgets의 인자로 사용되는 buf는 ebp-56이구용~ buf 위치와 call 위치를 찾았으니 bof 일으켜서 call에 넣을 shell 주소를 찾아봅시당~~ shell 함수는 전역 함수니까 main 위에 위치해..
level15 / guess what level14와 같은 문젠데 하나 다른 점은 check이 포인터 변수라는 점! buf에 bof일으켜서 check을 0xdeadbeef가 담긴 주소를 가리키게 만들면 된다. 현재 해야할 것은 0xdeadbeef 주소 찾기. gdb로 살펴보면 fgets의 인자로 사용하는 buf는 ebp-56에 위치하고, cmp로 비교하는 check 포인터 변수는 ebp-16에 위치한다. 포인터 변수는 그냥 변수랑 비슷한데 다른 점은 가리킬 주소를 담고 있다는 것이다. 따라서 0xdeadbeef가 아닌 0xdeadbeef를 "담고 있는" 주소를 담아야하므로 해당 주소를 찾아야한다. 0xdeadbeef와 변수를 비교하는데, 메모리에 직접 로드되야하므로 어딘가엔 있을 것이다. 그래서 직접 활..
level14 / what that nigga want? level14부터도 bof에 대해 푸나봅니다. 아무튼 문제를 보면 fgets로 인한 bof 문제이고, 조건으로 check에 0xdeadbeef가 있으면 자동으로 쉘 실행되네요. 그럼 bof 일으키고 중간에 check 변수만 제대로 해주면 그냥 풀리는 문제. gdb로 스택 구조를 살펴봅시다. fgets 함수 인자로 사용되는 buf는 ebp-56에 위치하고, if문인 cmp를 보면 0xdeadbeef와 비교하는 ebp-16이 check 변수 위치임을 알 수 있습니다. 그러면 최종적으로 아래와 같은 구조를 갖습니다. buf와 첫번째 dummy에 NOP을 덮고 check에 0xdeadbeek를 덮으면 자동으로 쉘이 출력되는 구조입니당 이 문제는 다른 문제..
level13 / have no clue hint를 봅시다. 인자는 1개 이상이고, 그 인자를 bof하는 문제인 것 같다. 하지만 i 변수가 변하지 않는 조건으로 bof 해야 하는 문제이다. i를 침범하면 kill 시스템콜로 프로세스가 죽는다. gdb로 i 변수와 buf 배열 사이의 간격을 찾아봅시다. strcpy의 인자인 buf는 ebp-1048 위치에 있으며 if는 cmp로 ebp-12에 있는 값과 0x1234567과 비교하므로 i는 ebp-12에 위치한다. 따라서 ebp-1048는 buf 위치고 ebp-12는 i 위치이므로 구조는 아래와 같다. buf랑 dummy 두 개에는 NOP으로 채우고 i는 그대로 0x1234567로 변조하지 않게 한 뒤에 level 11, level12에서 풀었던 방법인 R..
level12 / it is like this hint를 보니 LEVEL 11과 매우 유사한 문제이다. LEVEL 11에선 strcpy bof였다면 이 문제는 gets bof 문제이다. LEVEL 11 했던 것처럼 RTL 기법으로 풀어봅시다. gdb로 gets 인자로 사용한 STR 변수 위치 알아봤더니 EBP-264입니다. buffer(264) + ebp(4) + system주소 + nop(4) + /bin/sh주소 구조로 exploit 작성할 것이다. 필요한 system 주소와 /bin/sh 주소를 알아봅시다. ldd 명령어로 라이브러리 획득 해당 라이브러리에서 system 주소(\x4203f2c0)와 /bin/sh 주소(\x42127ea4) 획득 (이때 /bin/sh 주소 앞에 \x42 생략됨) (-..
level11 / what!@#$? hint를 보니 strcpy 함수를 이용한 bof 문제인듯! Setuid도 걸려있으니까 str을 bof해서 쉘코드를 넣으면 되겠다. 정확한 스택 구조를 알기 위해서 gdb로 살펴봅시다. main 함수에서 사용하는 strcpy 함수에서 인자로 사용되는 STR 변수의 위치를 알아냄 => EBP-264 그런데 이 문제에서는 쉘코드를 STR 변수에 넣고 RET에 STR 변수 "주소"를 직접 넣어야 하므로 정확한 STR 주소를 알기 위해서 breakpoint를 이용합시다. breakpoint를 strcpy 함수가 끝난 부분에 걸어서 인자값을 넣을 때 어느 위치에 위치해있는지 확인합시다. "a"를 100번 넣어서 주소를 확인하려 했는데 "Couldn't get registers:..
level10 / interesting to hack! key_t 값이 7530인 공유 메모리를 읽고 level11의 권한을 얻으라는 문제이다. 공유 메모리 : 보통 프로세스에서 사용되는 메모리영역은 해당 프로세스만이사용할수 있다. 하지만 때때로 여러개의 프로세스가 특정 메모리영역을 사용했으면 하는때가 있을것이다. 이때 사용하는 것이 공유 메모리이다. 출처: https://unabated.tistory.com/entry/공유-메모리-shared-memory [랄라라] 일단 level11 SetUID를 가진 파일은 찾을 수 없다. 지금 할 수 있는 건 공유 메모리에 접근하는 것뿐이다. ipcs 명령어를 통해 현재 생성되어 있는 IPC 지원 목록을 조회 가능하며 [-m] 옵션으로 공유 메모리 자원만 볼 수 ..