2026. 4. 29. 18:57ㆍ카테고리 없음
웹해킹 게임
| 오류번호 | 키 |
|---|---|
400 |
KEY{10fac9b9f4112a1d9a650fec275bf164} |
401 |
? |
402 |
|
403 |
KEY{cd79de80772c1873bcf63e41e3379c6f} |
404 |
KEY{23c0b3a9ccc44b72f17a99eadb351d2f} |
405 |
KEY{e5602408f2037c05bbbb0995fec6bc58} |
407 |
|
408 |
KEY{e44fa3e1865a3839cbc0b658f1ae08cf} |
410 |
|
412 |
|
414 |
KEY{d1617527ac2143863bc347c6123ed921} |

/robots.txt 는 시도해봤는데 안됨
개발자 도구를 켜봄

웹해킹인데 설마 사진 파일에 스테가노그라피가 있지는 않겠지?
아니라고 치고, 다음 키를 찾아야함. 페이지 내에 상호작용 가능한게 ‘제출’버튼 하나밖에 없음
오호. 제미나이에게 현 상황에서 선택 가능한 옵션을 물어봤는데, 문제 내에서 어떤 식으로 풀어야하는지 답이 살짝 나왔다고 한다. 사실 문제 자체가 처음 보면 난해한게, 서버와의 상호작용을 줄 수 있는 곳이 얼마 없다. 기껏해야 제출 폼 하나? 근데 이걸로 할 수 있는건 SQLI정도밖에 없다.
클라이언트에 주어진 파일도 특별한게 없는 js와 html이었기 때문에 더욱 그러했다. 결론은 바로 이 부분이다.

4XX 번대 응답을 받아내면 문제가 풀리는 것이다.
!! 그럼 우선 4xx번대 에러가 무엇이 있는지부터 알아봐야겠지? 이전에도 봤었지만 머리속에서 전부 담아두는 것은 아니니깐.

http://protect-everything.tistory.com/10
내가 내가 작성한 문서를 참조할 수 있다니. 뭔가 뿌듯하다.
즉 지금 해야하는건, 잘못된 요청으로 처리를 불가도 만들어야 하고, 인증이 필요한 페이지도 미인증 상태로 가봐야 하고, 예약됨은 무슨 말일까? 저건 좀 알아봐야겠다. 404는 이미 시도했고, 그럼 이제 8개가 남아야 하는건데, 플래그는 총 8개가 남았단 말이지..? 저 11개 중에 내가 의도적으로 낼 수 없는건 무엇이 있을까? 410이나 408 같은건 좀 어려울 수 잇을것 같아 보인다. 우선 그럼 가장 해보기 쉬울 것 같은 요청 길이가 너무 긴 경우를 해볼까?

다음건 제미나이가 추천해준 경로로 들어가본건데, /auth 혹은 /.htaccess로 들어가보라고 했다. 403이 뜨는걸 보니 아마 권한이 있어야만 들어갈 수 있는 곳인것 같다.

그러면 원래는 /.htaccess는 뭐하는 경로인걸까?
제미나이:
./htaccess(Hypertext Access)는 파일 자체가 하나의 경로로써 있다기 보다는, 아파치 웹 서버의 동작을 디렉터리 단위로 제어하기 위한 설정 파일이다. URL 리다이렉션이나, 특정 IP의 접속을 차단, 특정 폴더에 비밀번호를 걸거나, 404 또는 500 등 에러가 발생했을 때 보여줄 디자인 페이지에 대해서 정의하기도 한다.
웹의 설정 파일과 같은 느낌으로 이해하면 될 것 같다.
다음 해볼것을 생각해보자.
아무래도 순서가 있으니, 400 아니면 401을 해보는게 좋을 것 같다. 이들은 각각 잘못된 요청이나, 권한이 필요한데 요청하는 경우이다. 난 사실 /.htaccess가 401일거라고 생각했는데 아니었네.
그럼 우선 어떤 요청이 잘못된 요청인지 알아보자.
제미나이:
400 Bad Request는 한마디로 서버가 “너가 보낸 요청이 무슨 말인지 모르겠거나, 규칙에 어긋나서 처리해줄 수가 없는 상태야” 라고 거절하는 상황이다. JSON에서,나{}를 제대로 닫지 않는 경우에 이를 400 에러로 던지기도 하고, URL에 허용되지 않는 특수문자를 인코딩 없이 그대로 보내는 경우에도 발생한다. 또한 문법이 맞아도 데이터 타입이 이상한 경우, 헤더의 정보가 오류가 발생한경우. 등등이 있다.
제이슨을 보내는 요청은 아니니깐, url에 안되는 특수문자를 그냥 보내보자.

분명 안될 이유는 없다고 생각했는데 안된다. 특수기호가 들어가면 그냥 안된다고 생각했는데 그건 아니라고 한다.
제미나이: 잘못된 문법이라고 판단하지 않고, 해당 이름의 파일이 없는 것으로 판단하기 때문이 이러한 결과가 나오는 것이다.
이후에 콘솔에도 뭘 입력해보라고 했지만, 결국 되지 않았다. 이보다는 다른 방법을 권장하였다. 제미나이는 이에 curl의 사용을 권장했다.
curl이 뭔고 하니, 서버와 통신을 할 수 있는 커맨드 명령어 툴이라고 한다. 브라우저랑은 다르게 특별히 규격이 안 맞더라도 이를 수정해주는 기능이 없는데, 이 점이 오히려 우리에게는 더 좋은 점이 되는 것이다.
뭔가 깔아야되는건가 했는데 그런건 아니고 간단하게 터미널에서 실행할 수 있었다.
curl -v -X "BAD REQUEST" http://webhacking.kr:10022/
# 위에꺼가 안돼서 아래꺼로
curl.exe -v -X "BAD REQUEST" http://webhacking.kr:10022/

401 코드는 인증이 필요할 것 같은 루트인 /api/users/me, /api/orders, /admin 의 경우 전부 다 404로 리다이렉팅 되었기 때문에 없는 듯 하다.


