일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MySQL
- 백준
- 자바스크립트
- 보안
- 리버싱
- 리눅스
- 리버싱 워게임
- C언어
- 백준 알고리즘
- 웹
- 넘파이
- 인공지능
- 해킹
- CodeEngn
- 웹해킹
- 어셈블리어
- 머신러닝
- webhacking
- 회귀 수식
- writeup
- php
- 워게임
- html
- 리액트
- webhacking.kr
- abex crackme
- 리버싱 문제
- sql injection
- 알고리즘
- 컴퓨터 구조
- Today
- Total
인공지능 개발일지
[Wehacking.kr]old 25번 Writeup 본문
안녕하세요.첫 포스팅은 해킹 동아리에서 과제로 받은 문제 풀이과정을 써보겠습니다!
초기 화면에서는 리눅스의 ls -al명령어를 통해 볼 수 있는
목록이 나열되어 있다. 가장 먼저 url창의 file=hello가 눈에 띈다.
따라서 file이란 변수로 회색창에서 $_GET방식으로 파라미터를 받는건가 하는 생각에
url창의 file=hi로 변경해 보았다.하지만 예상과 달리 아래 화면처럼 회색창에 hi는 뜨지 않고 hello world가 사라졌다.
그리고 회색창이 입력 프롬프트인줄 알고 여러가지를 입력해 보았지만 url상에
어떤 변화도 일어나지 않았고 엔터를 누르면 입력이 되는 것이 아니라
다음줄로 넘어가는 것으로 보아 프롬프트는 아님을 알 수 있다.
코드를 보기위해 개발자모드(f12)로 웹 페이지의 코드를 살펴 보았다.
그런데 우리가 원하는 소스 코드가 아니다.단순히 페이지의 외형을 소개하는 html코드만 있기 때문이다.
내가 원하는 것은 file이라는 변수를 포함한 코드이다.
다시 처음으로 돌아가 리스트를 보니 3개의 파일은 모두 확장자가 php코드이다.
또한 우리가 여지껏 봤던 hello를 url에 입력하면 hello가 그대로 나오는 것이 아닌 hello world가 나온다.
이를 바탕으로 회색창은 입력창이 아니라 출력창임을 알 수 있다.
그것도 flag,hello,index라는 파일의 출력창.
따라서 각 파일의 내용을 보고 싶으면 file=flag,hello,index 를 차례로 url에 입력해보면
각 파일의 내용이 회색의 "출력"창에 나온다.
반복해서 말하지만 이 문제에서 처음 헤멘 것은 일반적으로 창이 있으면 출력창이 아닌
입력창일 것이라는 생각 때문이다.
이를 통해 get방식으로 입력 받고 웹 페이지에서 출력하는 경우도 있음을 알았다.
다시 본론으로 돌아가서 flag파일 안의 내용에서
"FlAG is in the code" 라고 flag에 코드가 있다고 알려준다.
여기서 다음 스텝으로 넘어가기 위해
알아야하는 개념은 PHP Wrapper이다.
이것을 사용해서 LFI공격을 할 수 있다.
LFI,RFI가 생소하신 분들이 있을 건데 뭐냐면
한마디로 LFI는 접근하려는 파일이 대상 서버에 있는 것이고
RFI는 접근파일이 대상 서버 밖에 있는 것이다.
아하 그렇다면 여기서 LFI가 등장하는 이유를 알겠다.
우리가 접근하려는 파일 flag가 대상 서버에 있으니 LFI공격을 통해
코드를 볼 수 있겠다.
그래서 php wrapper공격에는 크게 아래 3가지가 있다.
- expect://
- php://filter
- zip://
이중 문제에서 사용할 것은 php://filter이다.
사용법은 php://filter/convert.base64-encode/resource=파일명으로
여기선 php://filter/convert.base64-encode/resource=flag이다.
이것을 url창에 입력하면 아래와 같이 우리가 원하는 정보를 출력해준다.
이때 출력된 것은 base64로 인코딩된 것이므로 그대로 디코딩하면 아래와 같이
flag의 소스코드가 나온다.
참고로 디코딩 사이트의 링크도 첨부해두었다.
역시 예상대로 flag변수에 값을 저장한다.
이제 구한 FLAG{this_is_your_first_flag}를 webhacking.kr의 auth에 입력해주면 풀린다.
'보안 > 해킹 워게임' 카테고리의 다른 글
[Wehacking.kr] old 24번 Writeup (0) | 2021.05.24 |
---|---|
[Wehacking.kr] old 23번 Writeup (0) | 2021.05.23 |
[Wehacking.kr] old 18번 Writeup (0) | 2021.05.22 |
[Xss-game]Level 1~6번 Writeup (0) | 2021.05.21 |
[Wehacking.kr] old 41번 Writeup (0) | 2021.05.18 |