<OOO>

[Hacking Camp] CTF write up 본문

CTF write up

[Hacking Camp] CTF write up

<OOO> 2021. 2. 21. 04:10
728x90

[Demon 팀분+발표자님+참가자님의 블로그 주소는 맨 하단에 있습니다!!!!]

 

작년 여름에 참가했었지만 올해는 CTF를 한다고 하기에 부랴부랴 신청해서 교육듣고 CTF 참여를 하였다.

해킹캠프 CTF는 초보자들을 위해 맞추어진 대회라고 생각했었는데 문제 난이도가 상당히 높아 조금 당황을 했다.(?)

리버싱이랑 포너블은 공부를 안해서 안풀고 MISC랑 WEB만 주구장창 풀었다.

(이거 푼다고 저녁을 대충 때웠는데 문제 풀다가 배고파서 쓰러질 뻔 했다...)

 

먼저 WEB 부터 천천히 풀어보자. (주 분야가 WEB이라서 WEB만 풀었다.. 나도 짱해커 되고싶다...)

 

jhyeon 님이 만드신 Flag Shop 이다.

 

난 항상 로그인 화면을 보면 sqli 때리고 싶다는 생각이 든다. 그래서 sqlmap을 돌렸으나 별다른 소득은 없었다...

 

돈 1000원으로 99,000원짜리 flag를 사야한다. (너무 비싸다)

당연한 소리지만 1000원으로 flag를 살 순 없다. (??? : 넌 못지나간다)

 

이거 풀면서 해킹캠프 뱃지만 엄청나게 샀던것 같다. 실제로도 많이 사고싶다.(PoC 사랑해요!!!!!!!!)

버프로 살때 잡은다음 호작질(?)을 해봤으나 아무것도 못했다.

 

??? : 아니 서론이 긴데 풀이 언제 공개해요!!! 빼애애애애애애앵애애ㅐ애애액!!!!!

 

 이제 본격적으로 문제풀이를 해보겠다.(진지 -_-)

 

맨 처음에 가입할때 이런 패킷이 날아가는게 보일 것이다.

username과 password, nickname 파라미터가 사용되는걸 확인할 수 있다.

제일 중요한 문제가 포인트를 어떻게 조작하냐가 중요한데, 버프로 가입할때를 잡아서 point 변수를 추가해주면 된다!

 

회원가입할때 요청되는 화면인데, 맨 마지막 nickname 뒤에 point를 추가해주면 돈이 증가한다.

(내 돈도 그렇게 증가했으면 좋겠다.... 저 일좀 시켜주세요...)

이렇게 추가를 해주고 로그인을 해준다.

그러면 돈이 내가 원하는 값 만큼 쌓인게 보일것이다. 우린 이제 돈이 많으니까 깃발을 사서 flex 해버리자~

flag 값은 공개하지 않겠다. 

 

 

alkyne 님이 만드신 hahahash 이라는 문제다.

 

저 해쉬값을 역해쉬 시키면 camp 라는 단어가 나온다. camp 단어를 넣으면 다음 문제로 가는 길이 열린다.

 

내가 넣은 값이 md5 해쉬 시켰을대 0e830402... 값이랑 똑같으면 풀린다.

간단하게 magic hash 몽둥이로 때려주자. 그러면 길이 열린다.

240610708

 

사실 여기서부터 좀 힘들었다 똑같은 단어를 쓰면 hi가 나오고 서로 다른 단어를 쓰고 md5 해쉬값이 똑같아야지 풀린다고 하는데 md5 hash 충돌을 검색해서 넣어도 안풀렸던 문제다. 삽질을 조금 했다.

hash1 과 hash2에 서로 다른 값을 넣고 strcmp를 우회할때 사용하던 []를 넣어주면 다음 문제로 가는 길이 열린다.

 

 

md5으로 해쉬 시킨 값과 sha1로 해쉬 시킨 값이 동일해야지 풀리는 문제다. 총 문제는 4문제밖에 없으므로 이것만 풀면 flag가 나온다. 정답은 3번과 똑같이 []를 넣어서 풀면 된다.(언인텐으로 푼건지 제대로 푼건진 잘 모르겠다...)

 

jhyeon 님이 만드신 Simple Memo 문제이다.

 

메모를 작성 할 수 있는 기능이 보이는것같다. 근데 다른사람의 글을 읽으려고 하니까 안읽어진다.

 

메모작성 버튼을 누르면 이 화면이 나오게 되는데 여기서 적절한 값을 넣으면

 

이런식으로 나오게 된다. 여기서 우리는 몇가지 공격 스토리를 예상할 수 있다.

php 명령어를 써서 파일을 출력하게 하던가, 아니면 ssti 공격을 때려보던가 등등 방법이 있다.

(ssti 공격이 뭔지 잘 모르겠다면 구글링을 해보자.)

이 문제에서 요구하는건 ssti 공격이므로 테스트로 {{7*7}}를 넣게 되면

 

이렇게 49라는 숫자가 나오게 된다. 여기에 49가 나오는 것이 ssti 공격이 먹힌다는 것이다.

자 그럼 이제 구글링 열심히 해서 exploit 코드를 구해보자.

 

 

{{request.application.__globals__.__builtins__.__import__('os').popen('ls').read()}}

 

대충 설명하자면 뒤에 ls 부분에 내가 원하는 명령어를 넣으면 된다.

 

context 부분에 저걸 넣으면

이런 화면이 뜰텐데 ls 를 cat app.py 하면 flag가 나오게 된다.

 

 

g0pher 님이 만드신 goods shop 이라는 문제다.

 

로그인 창에서 회원가입을 하고 로그인을 한다.

그러면 이 화면이 보일텐데 여기서 ctrl + u 를 누르게 된다면 페이지 소스 전체보기가 된다. 

소스 하단에

이런게 있다. 근데 일반 유저로 접근을 하게 된다면 403 에러가 뜬다.

 

아까 로그인 한 다음 접속했을때 보인 QnA 메뉴를 눌러서

 

이렇게 글을 쓴다. 이거는 XSS로 관리자의 세션을 훔쳐오는 세션 하이재킹 이라는 기술이다.

xss로 세션 하이재킹할때 필요한 조건이 있다. 쿠키에 httponly 옵션이 붙어있으면 안된다.

 

저렇게 쓰면 관리자를 해킹(?)한 해커가 내가 만든 QnA를 읽게 된다. 

근데 저것만 쓰면 되는게 아니므로 포트포워딩을 해줘서 내 웹서버를 on 해줘야한다. 

php도 만들어야하는데 이상하게 동작을 안한다. 그래도 /var/log/apache2/access.log에는 기록이 되므로 그걸 통해 관리자의 세션값을 탈취하면 된다.

 

관리자가 읽으면 이런 로그가 남는다.

 

자 이제 우리는 관리자의 세션도 있겠다 admin페이지로 이동을 해보자.

 

admin 페이지에는 upload가 있다. 이거보고 처음에 웹 쉘을 올려야하는건 싶었지만 그땐 몰랐다. 내가 삽질을 엄청나게 할 줄은...

upload에 들어가면

이렇게 상품명과 가격을 쓰라는 칸이 나오는데 아무렇게나 쓰고

 

네 누르기 전에 빨간줄 친 부분을 지워주면 xml 양식이 나온다. 우린 이 xml을 이용해서 공격을 해야한다.

이러한 공격기법을 xxe 라고 한다. (정보보안 산업기사 객관식에서 나왔던 문제다. 외워두자)

 

그럼 이 화면이 보일텐데 여기서 우리가 조작을 해서 원하는 값을 읽어야한다. 문제에 있는 /flag.txt 파일을 읽어야 한다는 소리다.

근데 여기서 바로 수정을 해서 업로드를 하게 된다면 아무것도 안나온다. (이 부분이 삽집을 하게 한 원인이다.)

버프로 요청할때를 잡게 된다면 

이렇게 나오는데 result 부분에 우리가 원하는 값을 넣어야한다.

exploit 코드는 다음과 같다.

 

이걸 url인코딩 시켜서 result에 보내야한다.

 

url인코딩을 한 값을 보내면 flag가 나온다.

 

 

웹은 2문제 더 있었지만... 못풀었다 ㅠㅠㅠ

이제 MISC를 풀으러 가보자.

 

HwangSumin 님이 만들어주신 Find Me 문제다.

해당 파일은 똑같은 크기로 이루어진 파일이 1만개정도 있는것같다. 여기서 내가 원하는 값을 추출해야하는데 우리에겐 리눅스가 있다. 리눅스 명령어로는 strings 를 쓰면 된다.

압축해제는 필수~~

 

strings * > flag.txt 를 하고 파이썬으로 코드를 쓱싹 짜준다. (strings * 을 실행한 결과값을 flag.txt에 넣는다.)

 

심플한 코드다. 코드를 대충 설명하자면  flag.txt에 있는 실행결과를 바탕으로 내가 원하는 값을 찾는 코드이다.

if문으로 저 단어가 없으면 line을 출력하고 정지시킨다. 이렇게 풀면 flag 가 나온다.

 

jiravvit 님이 만드신 flag.png 라는 문제다. 문제파일을 열면 다음과 같은 그림이 나온다.

 

이 그림에 대해서 우린 분석을 해볼거다.

이 문제에서 요구하는건 png 속에 png 속에 png가 있다. 이걸 우린 하나하나 뜯어보면 된다. 이 기술은 카빙 이라는 기술인데 포렌식에서 사용되는것 같다.

 

hxd에 값을 넣고 png 헤더 값인 89 50 4E 47을 검색한다. 그러면 PNG가 하나 더 나올텐데 2번째 png를 기준으로 위에 있는 것은 지워준 다음 저장을 하면?

 

이런 화면이 나온다. 근데 우리가 원하는 flag값은 closer가 아니므로 이와 같은 작업을 한번 더 진행해준다.

그렇게 하면???

 

 flag가 나오게 된다.

 

 

jhyeon님이 만드신 FlagBot 이라는 문제다. 문제 설명에 있는 저 링크로 가면 텔레그램 봇으로 이동하게 된다.

 

명령어가 나온다. 이 문제는 푸는 방법을 알면 정말 쉽지만 그걸 알기전까진 삽질을 엄청나게 해야할 것이다.

web 문제보다 이 문제를 먼저 풀었다.(CTF의 첫 솔버가 나다... ㅎㅎ)

 

 

여기서 /date만 입력을 해야한다. /weather를 선택할 시 flag가 출력이 안된다.

 

/date 입력 후 파이프라인을 사용하여 flag를 읽는다.

 

 /weather를 선택하고 cat flag를 한 화면이다.

 

사실 이게 제일 간단하면서 풀기 어려웠던 문제가 아닐까 싶다.

 

 

 

 

후기

 

대학 동기들이 해킹캠프에 참여해야지~~ 라는 소리를 듣고 아 나도 참여해보고 싶다 라는 생각만 주구장창하고 바빠서 참여를 못했지만 작년과 올해는 비대면으로 진행을 해서 편하게(?) 참여했던것 같다. 그치만 모든 컨퍼런스와 행사는 온라인보단 오프라인으로 만나야지 더 재미있는법. 다들 직접 얼굴보면서 얘기도 하고 친목도 다지는 그런 시간이 되었으면 정말 좋겠다는 생각이 들었다. 

 

+ 여담

 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ flag shop 풀다가 api 디렉토리 있어서 웹 스캐너 돌렸는데 서버가 과부하가 되어서 렉이 엄청나게 발생했다. 앞으로는... 툴도 적당히...돌려야겠다... 다른 CTF에서 게싱 문제가 자주 나와서 그런가 몸에 익숙해져서 큰일이다. 

 

HackingCamp를 주관해주시는 PoC 관계자분과 Demon 팀에게 박수를 보낸다. 

(사랑해요 Poc!!!! 사랑해요 Demon!!!!!!)

 

그리고 추가로 못풀었던 문제의 풀이는 사진으로 대체하겠다.

앱 모의해킹을 하고싶은 욕구를 주신 arrester님

 

갓 짱해커 jhyeon님

 

 

초콜릿 드리고 싶네요. 기회가 된다면 제가 초콜렛 왕창 사들고 가겠습니다. c0nstant 님!

 

닉네임같이 천사같으신 rls1004님 레드불 마시면 날개가 생길지도 몰라요 ㅎㅎ

 

 

 

문제 출제자 닉네임

 

포너블 : rls1004, HwangSumin, juntae

웹       : jhyeon, alkyne, g0pher, rls1004,

리버싱 : jeongsangsu, juntae

MISC   : g0pher, HwangSumin, jiravvit, arrester

 

수준 높은 문제를 풀 수 있게 해주심에 정말 감사의 인사를 드립니다!!!!

 

+ 진짜 마지막 여담

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

그땐 내가! 마! 깡패가 되는거야!

 

 

긴 글 읽어주셔서 감사합니다. ><

 

잠시 블로그 홍보좀 할게요...ㅎㅎㅎ

 

[Demon]

김민정님 : https://rls1004.github.io 

손현지님 : https://jiravvit.tistory.com 

정동현님 : https://blog.jhyeon.dev 

정상수님 : https://1993-constant.tistory.com 

황수민님 : https://katolik-xixon.tistory.com 

 

[발표자]

김주원님 : https://blog.naver.com/lstarrlodyl     --> 웹 취약점 스캐너 발표하셨다.

홍승표님 : https://nt.ph4nt0m.xyz   --> CodeQL Analysis 발표하셨다.

 

 

[참가자]

황영하님 : https://13arnes.tistory.com/47

 

'CTF write up' 카테고리의 다른 글

[vishwaCTF] WEB write up  (0) 2021.03.15
[Hacking Camp] 22회 CTF WEB 못풀었던 문제  (0) 2021.02.22
HACON CTF write up  (0) 2020.09.27
[HackCTF] 가위바위보 문제풀이  (0) 2020.08.24
Redpwn 2020 CTF Write up  (0) 2020.06.26
Comments