Vishwactf web write up

Posted by cby234
2022. 3. 23. 17:35 web hack

회사 복귀를 위한 재활용 CTF write up

 

1. Hey Buddy!

 

문제에 접속하면 심플한 입력 페이지가 나오며 간단하게 {{5*'5'}} 를 넣어보면 SSTI 가 되는 것을 확인 할 수 있다.

 

https://h3y-buddy.vishwactf.com/submit?name={{5*5}}

 

 

따라서 SSTI가 된다는 점을 알게 되었으며 flag파일을 찾기 위해 RCE를 하기로 했다 이를 위해 Popen 함수를 찾게 되었고 확인 해본 결과 213번째 인덱스가 Popen이라는 것을 알게 되었다.

 

https://h3y-buddy.vishwactf.com/submit?name={{%27%27.__class__.__mro__[1].__subclasses__()[213]}}

 

 

따라서 Popen 함수를 이용하여 RCE를 하였으나 확인 결과 공백이 들어가면 에러가 발생하는 문제가 발생하였다. 그래서 여러가지 방법이 있겠지만 귀찮아서 $IFS 변수를 이용하여 공백을 대신하였고 이를 통해 ./flag.txt 파일을 읽을 수 있었다. (롸업 쓰는 시간 기준 flag.txt가 사라져서 그냥 /etc/passwd 파일을 leak 함)

 

https://h3y-buddy.vishwactf.com/submit?name={{%27%27.__class__.__mro__[1].__subclasses__()[213](%27cat$IFS/etc/passwd%27,shell=True,stdout=-1).communicate()}} 

 

flag가 나온다

 

 

2. My Useless Website

 

딱히 쓸거도 없는 간단한 SQLI 문제. 문제를 들어가면 간단한 로그인 창이 있으며 비번에다 SQLI 구문을 넣으면 flag가 나온다.

 

https://my-us3l355-w3b51t3.vishwactf.com/?user=123&pass=asdf%27or%27a%27%3D%27a

 

flag 잘 나온당 ㅋㅋ

 

 

3. Stock Bot

 

간단한 봇 문제

 

문제를 들어가면 JS 단에서 Flag 라는 문자열을 필터하고 있길래 버프 잡아서 보니 check 파라미터가 값을 입력 받아

file_get_contents 함수의 인자로 넣고 있는 것을 에러 구문을 통해 확인 할 수 있다.

 

따라서 Flag 문자열을 넣으니 flag가 나왔다.

 

여담이지만 file_get_contents의 인자를 받고 있다는 점 + 오류를 뿜뿜 내준다는 점 + 필터가 없다는 점 이 3가지를 근거

로 php wrapper를 사용 할 수 있으며 이를 통해 내부 소스 파일을 유출 할 수 있다.

 

이를 통해 현재 페이지 소스를 leak 하면 다음과 같은 소스코드를 확인 할 수 있다.

 

https://st0ck-b0t.vishwactf.com/Products/check.php?product=php://filter/convert.base64-encode/resource=check.php

 

(갑자기 드는 생각 인데 이걸 왜 굳이 strpos 라고 했을까? 라는 의문은 든다 어차피 JS 단에서 필터를 피해서 Flag를 넣으면 Flag Quantity 라는 키만 달라지고 flag는 똑같이 읽어준다 ㅋㅋㅋㅋ 뭔가 순수하게 Flag라고 넣어서 flag가 유출되지 않게 하고 싶었던거 같은데 이것 역시도 ./Flag 이런거로 바이패스가 된다 ㅋㅋㅋㅋ)

 

뭐 어찌됬든 flag는 잘 나온다.

 

4. Request Me FLAG

 

걍 짜증나는 게싱 문제

 

문제 풀떄는 못풀었는데 롸업 보니 한숨이 절로 나왔다. 걍 현재 URL에 뒤에 머가 더 붙어서 날라가는 사이트인데 ssrf를

할 방법이 없다.

 

없어서 롸업 봤더니 걍 FLAG 메소드로 날리면 FLAG 헤더가 붙어오는 이상한 문제

 

아직도 이런 문제가 있다니...

 

5. Todo List

 

잼있는 object 인젝션 문제 

 

당시에는 성호형이랑 논다고 시간내에 못풀었지만 혼자 결국 풀어낸 문제

 

페이지를 들어가면 ?source를 통해 소스 코드를 확인 할 수 있다.

 

소스 코드를 확인하면 ShowSource 클래스 구조와 flag.php를 읽는 게 최종 목표라는 것을 확인 할 수 있다.

 

취약점은 간단하다. todos 쿠키에 의해 object를 입력 할 수 있으며 이를 unserialize 하기 때문에 ShowSource 클래스의 변수를 내가 변조 할 수 있다. 

 

따라서 ShowSource 클래스의 source 변수를 내가 원하는 변수로 바꿀 수 있는데 문제는 ShowSource의 __toString 메소드를 호출해야만 source 변수의 파일을 읽는다는 것이다.

 

문제는 ?source 파라미터를 넣으면 source 변수가 __FILE__로 강제 되기 때문에 source 파라미터론 __toString 메소드를 호출 할 수 없다.

 

따라서 하위의 foreach 문의 echo를 통해 ShowSource 클래스의 __toString 메소드를 호출해야 하며 이를 위해 두번 serialize 했다.

 

최종 POC : 

12213db7b2e7a8901a195eb5db577c0b4770021ea:1:{i:0;O:10:"ShowSource":1:{s:6:"source";s:10:"./flag.php";}}

 

 

flag가 잘 튀어 나온당

 

6. Keep Your Secrets

 

JWT 토큰 문제

 

롸업 보고 푸는 법은 알았음

 

개인적으로 브포는 CTF용으론 좋은 문제가 아니라고 생각하는 사람이기에 hash 알고리즘을 "None" 으로 두는것 까지만 익스하고 브포를 돌리지는 않음

 

롸업 보니까 브포 돌리면 password가 owasp 인것을 확인 할 수 있으며 이를 넣고 admin 계정 JWT를 만들면 인증됨

 

flag도 Weak Password 같은 느낌인거 보니 의도가 이거 맞는듯 어찌됬든 풀이는 브포

'web hack' 카테고리의 다른 글

python debugger pin code leak  (0) 2021.08.01
blind command injection poc  (0) 2021.08.01
pickle vuln POC code  (0) 2021.08.01
Sqli filter bypass cheat sheet 2020 version  (0) 2020.02.11
PHP RCE waf bypass  (0) 2019.12.17

python debugger pin code leak

Posted by cby234
2021. 8. 1. 04:58
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

blind command injection poc

Posted by cby234
2021. 8. 1. 04:49
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

pickle vuln POC code

Posted by cby234
2021. 8. 1. 04:47
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

Sqli filter bypass cheat sheet 2020 version

Posted by cby234
2020. 2. 11. 11:27
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

PHP RCE waf bypass

Posted by cby234
2019. 12. 17. 17:42
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

theoremctf.com - php is alive

Posted by cby234
2019. 12. 16. 17:16
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

Node Js SQLI POC

Posted by cby234
2019. 11. 12. 14:53
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.