거의 다 풀었는데 끝마무리를 못짓거나 시간 투자를 많이 못해서 못 푼 문제들이 많아서 많이 아쉬웠다.
1. FLAG HOLDING
초기화면에서 보여주는 것이다.
referer에 해당 url을 추가해주면 다음 step으로 넘어간다.
다음 step이다.
약간의 guessing을 했던 문제인데 secret에 대한 인자가 없는거 아닐까 싶어서 추가해봤다.
burp의 response에서 hint를 발견할 수 있다.
당연히 http지 뭐....이제 마지막 step이다.
ㅇㅎ method 만 바꿔주면 되겄네~
쨘!
이후의 문제 3개는 다 풀거나 많은 삽질을 했지만 해결못해서 아쉬운 마음에 정리해둔다.
2. NOVEL READER
...진짜 다풀었었느데...
기능
-balance 10 당 words balance 1이고 words balance가 추가될때마다 novels를 볼 수 있는 글자가 한글자씩 추가되는 구조이다.
-balance와 words balance의 교환은 charge account를 통해 이뤄진다.
-private novels는 읽을 수 없다.
무슨 방법을 써도 읽을 수가 없기에 경로추적을 수행해봤었는데...
분명 안풀렸었다가 추후에 알아보니.. 인코딩을 해주어야 했었다..코드를 안보고 푼 내탓이었다..
제공해주는 것을 잘 활용하자 제발
암튼 코드에 보면
name = unquote(name)
이런 부분이 있었다.....
그래서 url double encoding을 해주어야했었..;;;; 애초에 파일이름도 secret을 읽는게 아니었다 ㅋㅋ;;
3. NOVEL READER2
이 친구 역시 코드를 안봐서 생긴 참사였다
buf = readFile(name).split(' ')
buf = ' '.join(buf[0:session['words_balance']])+'... Charge your account to unlock more of the novel!'
이러한 부분이 있었는데...
혼자 -1일때 balance의 숫자가 올라가는 것을 보고 이게 중요포인트겠구나 까지는 접근했었다ㅠㅠㅠ
코드봤으면 바로 풀었을 텐데....
session을 통해 words_balance와 balance를 파악하는데 -1일 경우 파이썬이기에 역순으로 모든 걸 볼 수 있다.
그러므로, words_balance를 -1로 맞추어 준다.
요런느낌으로...
3. Advanced JSON Cutifier
가장 많은 시간을 들였던 문제이다... GO언어 관련 문제인줄 알고 GO언어의 framwork인 gin을 후다닥 공부하며 풀어보려했었는데 생각보다 너무 간단했던 문제였기에 많은 허탈함을 느꼈다.
소스코드에 아래와 같은 부분이 있었다.
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/REDACTED/REDACTED"
)
처음에 당연히 7*7이 계산되기에 알아보니 GO환경에서도 SSTI가 가능하다고 하여 SSTI를 포인트로 잡고 풀고 있었다..
하지만 전혀 다른 부분의 취약점이었다ㅠ
JSONNET llibrary에 대한 부분이었다.
아래의 링크를 첨부한다.
Read file contents and do string replacement on that · Issue #238 · google/jsonnet · GitHub
하하..
너무나 쉽게 풀 수 있는 문제였다ㅠㅠㅠ...
그래도 덕분에 때로는 쉽게도 생각해야하며, go언어에 대해 찍먹해보며 삽질하는 기회가 되었던 CTF였다.
아직 많은 공부가 필요함을 다시금 되새기도록 해주었다.
'CTF' 카테고리의 다른 글
BuckeyeCTF 2024 (0) | 2024.09.29 |
---|---|
ASIS CTF 2024 (0) | 2024.09.23 |
RSTCON 2024 CTF (0) | 2024.09.16 |
BSidesSF 2024 CTF (0) | 2024.05.06 |
0xl4ugh CTF 2024 (0) | 2024.02.11 |