목차
- 포렌식
- 리버싱
- 웹해킹
포렌식
문제 : xcz.kr - Prob22
👾 내친구 A는 어느날 출근길에 누군가 잃어버린 것 같은 노트북을 발견한다.
A는 이 노트북을 주인에게 찾아주고 싶지만 찾을 방법을 몰라서 포렌서인 나에게 노트북을 맡기게된다.
이 노트북의 주인을 찾아주자.
인증키 형식 : 출발지_거쳐가는곳(1곳)_최종도착지
인증키는 모두 대문자로, 띄어쓰기무시
예) PLACE1_PLACE2_PLACE3
1. 먼저 문제에 첨부된 파일을 다운로드한다. ‘notebook’ 이라는 파일이 생성된다.
2. 확장자가 따로 없어서 HxD를 이용해 파일 시그니처를 확인한다.
- HxD는 이진 파일을 읽는 무료 에디터 프로그램으로, 주로 사용되는 기능은 파일이나 이미지의 특정 섹터를 확인하거나 수정할 때 사용한다.
- 파일 시그니처란 파일 형식마다 가지고 있는 고유의 특징(포맷)에 대한 정보를 뜻한다. 보통 파일의 가장 처음(헤더 시그니처)이나 가장 마지막(푸터 시그니처)에 존재한다.
- 헤더 시그니처와 푸터 시그니처가 다른 형식일 경우, 파일에 문제가 있거나 조작된 파일일 가능성이 높다.
- 파일 시그니처는 손상된 파일을 복구하거나 파일 안에 있는 숨겨진 내용을 파악하는 포렌식 분야에서 활용된다.
→ ADSEGMENTEDFILE
AD SEGMENTED FILE이라는 파일 시그니처가 뭘까?
AD SEGMENTED FILE은 Access Data에서 지원하는 파일 포맷으로 FTK Imager로 만든 파일이다.
3. 확장자를 변경해 파일 이름을 notebook.ad1으로 다시 지정해주고 FTK로 연다.
그중 Desktop 폴더 아래 6095485345라는 파일이 있다. Created/Modified by using GPS Route Editor라고 중간에 써져 있다. 밑에 위도, 경도 정보가 있는 것도 확인 가능하다.
4. 중간에 적힌 http://www.gpsnote.net/ 링크로 접속해 GPS Route Editor라는 프로그램을 다운로드한다.
파일을 추출한 후 아래 사진과 같이 확장자명을 변경한다.
5. 지도가 나타나는데, 확대를 한 후 이를 분석한다.
공덕에서 출발해 김포국제공항을 지나 제주도로 도착하는 것을 확인할 수 있다. 하지만 이 문제를 만들 당시 지도에서 최종 위치가 7-ELEVEN이었기 때문에 정답은 'GONGDEOK_GIMPOINTERNATIONALAIRPORT_7-ELEVEN' 이라고 한다.
리버싱
레나튜토리얼 1번 풀이 - reverseMe.exe
reverseMe 파일을 실행하면, 라이센스를 새로 구입하라는 문구가 출력된다.
OllyDBG에 파일을 올리고 분석해보면 “Keyfile.dat” 파일이 있는지 확인한 후 점프를 결정하는 것을 볼 수 있다.
만약, “Keyfile.dat” 파일이 없으면 EAX에 -1를 저장해 [0040107B]에서 점프를 하지 않고, 파일이 있으면 점프를 한다.
Keyfile.dat 파일을 생성하고, OlliDBG를 다시 실행해보면 위와 같이 출력되는 것을 확인할 수 있지만, 정답이 아닌 것 같다.
다른 문자열을 찾기 위해 Search for → All referenced text strings를 클릭한다.
[0040120C] 주소의 문자열이 정답인 것 같다.
코드를 자세히 확인해보니, [004010D8] 주소에서 [00401205] 주소로 점프해온 뒤 [0040120C] 주소의 문자열을 출력하는 것을 볼 수 있었다.
OllyDBG를 다시 실행해보면, [004010BF] 주소에서 점프한 뒤, “Keyfile is not valid. Sorry” 문자열이 출력된 것을 확인할 수 있다.
그러므로, [004010BF] 주소에서 S플래그의 값을 0으로 바꿔 JL문이 실행되지 않도록(점프가 되지 않도록) 해야할 것이다.
[004010BF] 주소의 S플래그 값을 1에서 0으로 바꿔준다.
그 후 다시 차례대로 실행해보면, [004010D6] 주소에서 2번째 JL문이 나오는데 앞에서 했던 것과 동일하게 S플래그의 값을 1에서 0으로 바꿔준다.
[004010D6] 주소의 S플래그 값을 1에서 0으로 바꿔준다.
그러면 [004010D8] 주소에 도착할 수 있고, [00401205] 주소로 점프하게 된다.
“You really did it! Congratz !!!” 문자열이 출력된다.
웹해킹
webhacking.kr사이트의 old-35문제
insert into chall35(id, ip, phone) values('{$_GET['id']}','{$_SERVER['REMOTE_ADDR']}',{$_GET['phone']}) 의 쿼리를 통해 내가 입력창에 번호를 입력하면 guest와 내 ip주소가 같이 들어가게 된다.
정리하자면, select ip from chall35 where id='admin' and ip='{$_SERVER['REMOTE_ADDR']}’ 의 쿼리에서 뽑아낸 ip와 내 ip가 같으면 풀리는 문제인 것이다.
해당 문제는 insert into value('id','ip',phone),('id','ip',phone)형식으로 여러 데이터를 같이 삽입할 수 있는 것을 활용해서 공격하면 풀릴 것이라고 추측해 볼 수 있다.
이 문제를 풀기 위해서 ip값이 내 서버의 ip값과 같으면서 id가 admin이어야 한다. 따라서, sql의 insert 구문을 조작하여 admin 사용자의 정보를 추가하는 과정이 필요하다. 따라서 위의 sql 구문처럼 입력되도록 (id, ip, phone)형태로 id를 (admin, 나의 ip 주소(실제 내 서버의 ip), 숫자)를 입력창에 넣어보았다. 그랬더니 아래와 같이 문제가 풀렸다는 메세지를 받을 수 있었다.
'5. 방학 활동 > Write UP' 카테고리의 다른 글
[2023.07.22] I.Sly() 홈페이지 제작 - 1 (0) | 2023.07.31 |
---|---|
[2023.07.23] 워게임 문제풀이(2) - 2 (0) | 2023.07.24 |
[2023.2.10] 공모전 스터디 2주차 (0) | 2023.02.28 |
[2023.2.11] 정처기 자격증 스터디 3주차 (0) | 2023.02.28 |
[2023.01.28] 정처기 자격증 스터디 1주차 (0) | 2023.02.28 |