드림핵워게임
-
Dreamhack - Simple Patch Mewargame/Dreamhack 2024. 11. 26. 12:06
[LEVEL 1 - Simple Patch Me - reversing] 실제 시간으로 365일이 지나면 플래그를 출력하는 프로그램이 주어진다.프로그램을 패치하여 플래그를 획득하라고 되어있다. 일단 ida로 열어보면 main함수가 위와 같이 나온다.위 프로그램은 8760시간(365*24)이 지나지 않으면 1시간동안 sleep하고, 그 후 변수가 1 증가한다. dword_40404C를 8760으로 바꾸거나 sleep(0)으로 바꾸면 플래그를 얻을 수 있을 것으로 보인다.플래그를 출력하는 함수로 들어가본다. 개인적으로 그냥 궁금해서 __readfsqword() 함수가 뭔지 찾아보았다. https://learn.microsoft.com/ko-kr/cpp/intrinsics/readfsbyte..
-
Dreamhack - [wargame.kr] strcmpwargame/Dreamhack 2024. 11. 13. 14:11
[LEVEL 1 - strcmp - web] strcmp 함수를 우회하면 플래그를 얻을 수 있는 문제이다. 문제 환경에 접속하면 위와 같이 나온다. view-source를 클릭해보면 위와 같은 코드를 볼 수 있다. php 관련해 알고 있는 취약점이 없어서 구글링을 통해 알아본 결과 특정 버전의 php에서 strcmp()의 인자값으로 배열을 넣으면 NULL이 반환된다고 한다.또한 php는 NULL과 0을 ==로 비교할 때 True를 반환한다고 한다. 따라서 위의 하이라이트된 password 부분을 password[]과 같이 배열로 수정한다. 이제 chk 누르면 바로 위와 같이 플래그가 나온다. 플래그를 획득했다!
-
Dreamhack - [wargame.kr] fly me to the moonwargame/Dreamhack 2024. 11. 13. 14:01
[LEVEL 1 - fly me to the moon - web] 이 문제는 자바스크립트로 구현된 게임이 주어진다. 문제 환경에 접속하면 위와 같은 화면이 나온다. 게임이 종료될 때마다 개발자 도구의 네트워크 탭에서 high-scores.php가 생기는 걸 볼 수 있다.token.php는 10초마다 생겨난다.그리고 이 게임은 31337점에 도달해야함을 알 수 있다. 위는 burpsuite로 문제 환경에 접속한 후 게임이 종료되는 순간의 모습이다. 우클릭해서 send to repeater한 화면이다.score값을 목표값인 31337로 바꿔주고 send를 누르면 우측과 같이 Congratulations와 함께 플래그가 나온다. 플래그를 획득했다!
-
Dreamhack - php-1wargame/Dreamhack 2024. 11. 5. 21:57
[LEVEL 1 - php-1 - web] php로 작성된 Back Office 서비스에서 LFI 취약점을 이용해 플래그를 획득할 수 있고, 플래그는 /var/www/uploads/flag.php에 있다고 한다. 25번째 줄을 보면 따로 page는 따로 필터링하고 있는게 없다. list.php 내용이다. 여긴 필요한 정보는 없다. 여기서는 flag, : 필터링에 걸리면 Permission denied가 뜰 것이다. 문제 환경에 접속한 화면이다. List에 flag.php랑 hello.json이 있는데 flag.php는 앞서 코드에서 미리 본 것처럼 Permission denied가 뜬다. 즉, 공격 페이로드를 아무리 넣어도 필터링에 걸린다는 뜻이다. 필터링이 없는 메인..
-
Dreamhack - simple-sstiwargame/Dreamhack 2024. 11. 5. 21:32
[LEVEL 1 - simple-ssti - web] 존재하지 않는 페이지 방문 시 404 에러를 출력하는 서비스에서 SSTI 취약점을 이용해 플래그를 획득해야 한다. 문제에서 주어진 app.py이다.render_template_string()로 인해 템플릿 구문이 해석되어서 SSTI 취약점이 발생할 수 있다는 점을 인지하고 일단 문제 환경으로 접속한다. 문제 환경에 접속하면 위와 같이 나온다. 404Error 페이지에 들어왔는데 이렇게 뜨길래 Jinja Template에서 자주 쓰이는 공격 페이로드 중 {{config}}를 사용해본다. 바로 플래그값을 바로 확인할 수 있다. 플래그를 획득했다!
-
Dreamhack - proxy-1wargame/Dreamhack 2024. 10. 8. 10:57
[LEVEL 1 - proxy-1 - web] 문제 설명에 나와있는 그대로 Raw Socket Sender가 구현된 서비스가 주어진다.플래그는 flag.txt, FLAG 변수에 있다고 한다. 문제 파일부터 다운로드 받으면 위와 같은 코드를 볼 수 있는데 중요한 부분만 캡처했다.host는 127.0.0.1port는 8000data 부분에는 나머지 요구 조건을 만족시키면서 직접 HTTP 헤더 구조를 정확히 작성해야 한다.HTTP 헤더 구조는 아래 링크를 참고했다.https://raonctf.com/essential/study/web/http RAON CTF - WEB EssentialHTTP, HTTPS Secure Protocol HTTP 평문 전송과 암호화 HTTP Header / HTTP 헤더 HT..
-
Dreamhack - simple-web-requestwargame/Dreamhack 2024. 10. 8. 10:46
[Beginner - simple-web-request - web] STEP 1과 STEP 2를 거쳐 FLAG 페이지에 도달하면 플래그가 출력되는 문제이다. 문제 환경에 접속하면 나오는 페이지다. 문제 파일을 다운로드 받으면 위와 같은 코드들을 볼 수 있는데, 자세히 보면 문제의 답이 다 나와있다. STEP 1 페이지로 들어가면 위와 같이 나오는데 첫 번째 코드 사진에 있던 prm1과 prm2에 맞는 값을 각각 넣어준다. 제출을 누르면 바로 STEP 2 페이지로 리다이렉트된다.마찬가지로 두 번째 코드 사진에 있던 prm1과 prm2에 맞는 값을 각각 넣어준다. 제출을 누르면 FLAG 페이지로 이동해 플래그값을 바로 확인할 수 있다. 플래그를 획득했다!
-
Dreamhack - sessionwargame/Dreamhack 2024. 9. 25. 23:58
[Beginner - session - web] 쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스가 주어진다.admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있다고 한다. 문제 파일을 다운로드 받으면 위와 같이 app.py가 있다.여기서 가장 중요한 코드는 os.urandom(1).hex()인데 1바이트의 랜덤값을 생성한 후 이를 16진수로 바꾸는 코드이다.즉, session_storage에 저장되는 admin의 session_id값은 두자리다.(1바이트는 8비트고, 4비트가 16진수 하나로 표현됨) 문제 환경에 접속하면 가장 처음 나오는 페이지다. BurpSuite로 프록시 탭에서 intercept on으로 바꿔준 뒤 open browser 해주고 아까 위에 코드에서 본 ..