CTF/hackerfactory

Elementary Level 5 Write Up

종금 2019. 12. 18. 10:56
반응형

어렵싸리 레벨 4를 끝내고 드디어 레벨 5로 진입했다

(짝짞짞짞ㅉ까ㅉㄲ)

 

레벨5 문제부터 읽어보자

딱봐도 레벨 4랑 같다. 그럼 뭐 거기서 좀더 진화한 형태인가보다라고 생각하고 진행하면 될거같다.

(실은 블로그 작성때매 문제읽지 문제 접속부터 누르고 보는나..)

 

일단 문제 접속을 클릭하면 낯익은 화면이 보인다.(낯만 익지 저번 문제의 후유증이 밀려온다 ㅜㅜ)

 

더 볼것도 없이 게시판에 글하나를 클릭하면 이번 문제에서의 중점 사항이 나온다

 

그렇다 이번에는 권한 우회를 통해 글에 존재하는 파일을 다운로드 취약점을 이용하여  flag 획득까지 하라는거다.

주통으로보면 불충분한 인증 + 파일다운로드 취약점이 여기에 속할 것이다.

먼저 확인을 눌러보면 전화면으로 돌아가는 것을 알 수 있다.

뭐 대충 예상해보면 burp에서 a href 를 통해 이동시키는 구문이 있을거라 생각하고 href를 필터링하여

검색하도록 해보자.

 

 

보면 알겠지만 여기서 두가지가 보이는데 첫번째로는 자바스크립트중 접근권한이 없습니다라고 위에 적힌 부분을 호출하는게 보인다. 밑에는 온클릭인거보아하니 딱봐도 자바스크립트로 경고창 호출 후 이를 클릭하면 board.php로 다시 돌리는것이 보인다. 즉 두개를 통해 우리는 권한이 없으니 돌아가라고 하는 것을 알 수 있다.

 

이를 해결하려면 두가지가 있다.

 

일단 첫째로 저기 보이는 href 구문을 지워서 다시 board.php를 호출 못하게 하거나

 

두번째로는 위의 그림을 보면 게시판은 전부다 호출 한 상태에서 경고창을 띄우는 것을 볼 수 있는데

이때 확인을 누르면 board.php를 호출하는 요청이 버프에 전송될 것이다. 이를 지우면 그냥 리스폰스 그대로 남는다.

한번 해보자

 

 

즉 프록시를 걸어놓은 상태로 확인을 누르면 아래와 같이 GET 방식으로 board.php를 호출하는 것을 확인할 수 있는데 

역기서 이부분을 모두 지우고 포워딩을 누르면 게시판 그대로 멈추는 것을 확인할 수 있다.

(리스폰스 값은 대신 그대로 남아있다.)

 

 

 

하지만 다운로드를 눌렀을 때 문제가 생긴다.

다운로드 클릭시에도 권한에 대해 검사를 하는 것 같다.

그래서 정확한 확인을 위해 아까 찾은 리스폰스 부분에서 필요한 부분을 지우고 확인하기로 했다.

 

#ㅋㅋㅋㅋㅋ

 

온클릭 부분을 삭제해서 첨부파일이 안눌린다. 다시 위 두개만 삭제하자

 

이때 온클릭 후 false가 리턴되면 location board.php로 간다는게 신경쓰인다.

내가 다운로드 실패시 보드 가는거 같으니 true면 보드가고 나머지는 안가도록 설정한 뒤 다운로드를 눌러보자

 

그래도 안된다 그러면 첨부파일 부분에 있던 스크립트를 지우면 안되나보다 false만 변경하도록 하고 다시 해보자

클릭하면 Deny Alert뜨는게 문제가 있을것같지만 확인을 위해 일단 해보자

역시나 그렇다 여기가 문제였다. 저 Deny.Alert를 바꾸어야하나보다.

말도안되겠지만 allow는 역시안된다 ;;

 

그러면 Denyalert가 호출되는 스크립트를 일단 따라 들어가보자

 

먼저 f12 클릭후 요소중 아래부분을 보는데 뭔가 Utill.js가 스크립트 소스이며 자바스크립트 뭐시기하는거보니 의심이 간다. 일단 눌러서 확인을 해보면

 

잡았다 요놈!

 

 

fuction Denyalert()와 FileDownload가 보인다.

먼저 작동확인을 위해 현재 text.txt를 받기 위해

FileDownload(Text.txt)를 넣어 클릭해보자

 

 

문제가 있다고 하는거보니 뭔가 잘못되었나보다 다시 소스코드를 확인해보면 

 

if DownloadAccessPerm 이 N일시 alert 뚯씪이란다. 즉 지금 내 상태가 N인거 같다. 그럼 저거를 복사해서 다시 개발자 모드에서 검색을 해보면

 

이를 다시 Y로 바꾸고 다운로드를 눌러보자

 

그래도 되지 않는다 결국 소스로 돌아왔고 소스를 보니 아래와 같은 문장이보인다.

 

function FileDownload(FileName)

{ FileName = FileName + "," + DownloadAccessPerm

FileName = Base64.encode(FileName);

 

 

즉 Filename은 먼저 Filename에 ,를 추가한 후 Perm을 넣는다.

이후 세개를 합친거를 Base64인코더를 한다고한다.

그리고 이후 POST방식으로 HACKDOWNACT.php로 전송한다고 한다.

 

그럼 Text.txt,N을 base64 인코딩후 강제입력으로 보내보자

이렇게 전송요청시 권한이없는 사용자가아닌 잘못된 요청이라 뜬다. 뭔가 잘못된것이다.

 

강제입력으로 안되니 다시 게시판으로 돌아가서 여러가지를 시도하던중

 

이렇게하면 다운로드 권한이없다 나오는데

마지막에 y를 붙이면 반응이없어진다. 즉 권한이 생긴것같다.

 

하지만 위치는 /temp/hacktory.txt 파일이기에 

그럼 전 것처럼 ...//을 넣어 다운로드를 실행해보면 이래도 반응이 없다.

 

그래도 js가 맞는거 같아서 js를 찾아보다가 그냥 새롭게 만들어도 될거같다.

 

 

먼저 소스코드를 보면 아래를 주목한다.

 

 

막 이래저래 쓰다가 조건문으로 다운로드어세스 퍼미션을 보는것을 보면 검색후 먼저 Y 바뀌었는지 확인

 

 

아까 바꾸어났는지 잘바뀌어 있고

이후 js 스크립트 어디다 짤까하다가 footer가 비어있길래 좀 썻다.

 

이후 자동으로 이래 변하더라 오우...

이러고 다운로드를 클릭하니 위와 같이 나온다.

 

 

js 쿼리가 잘 적혔나보다. 이제 마지막 ,y 클릭 후 다시 다운로드 하면

반응이없다. 위치가 잘못되었나보다 (지금까지 그래서 실패한건가..

 

처음부터 다시시도해보자.

1. 버프에서 소스코드 리스폰스로 N -> Y

2. js 스크립트 추가 ( 푸터에)

해당코드 

더보기
<form name="frm" action="" method="">

<input type="hidden" name="FileName" value="">

</form>

<a href="javascript:FileDownload('..././..././temp/hacktory.txt,Y')">Down

하 눈물의 temp다..

 

 

여담 . 이번 js 코드는 구글링해서 라이트업으로 풀었는데

좀 공부할 필요가 있을 거 같다. 요즘 js 여러개 넣어서 만들던데 실제 사이트들도

이걸로 좀 해두면 여러가지 취약점 진단에 도움될듯하다.

반응형

'CTF > hackerfactory' 카테고리의 다른 글

Elementary Level 6 Write Up  (0) 2020.04.06
Elementary Level 4 Write Up  (0) 2019.12.08
Elementary Level 3 Write Up  (0) 2019.12.07
Elementary Level 2 Write Up  (0) 2019.12.07
Elementary Level 1 Write Up  (0) 2019.12.07