본문 바로가기

Wargame Write-Up141

[HackCTF] (Pwnable) Unexploitable_2 풀이 이렇게 되어있다. 보호기법은 NX 정도? leak 하기 위해서는 fwrite 함수를 사용해야한다. fgets 함수를 실행하고 return할 때, 스택상태이다. rdi, rsi, rdx, rcx 값을 확인해보면, rcx 에 stdout 포인터가 남아있지않다. 컨트롤할 수 있는 레지스터는 rdi, rsi 정도인데 흠... 근데 system 함수가 주어져있기에, system 함수로 leak 을 할 수 있다. system함수에 잘못된 명령어가 들어가면, 그 명령어를 출력해주는데, got 주소를 인자로 system 함수를 호출하면, got 주소가 출력될 것이다. 위처럼 페이로드를 짜면 저렇게 출력이 된당. leak 한다음 원샷가젯을 호출하자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .. 2021. 5. 3.
[N0Named] (Forensic) [C] 조별과제_배드엔딩 / 누가 진짜일까? / 어제 뭐 했어? / 너의 집 비밀번호는? / Left Side B / 우리의 추억들 / 아니 오해라니까 / 우리 이제 그만하자 조별과제_배드엔딩 ppt 를 열고, 흰 네모 두개를 없애보면, pptx -> zip -> folder -> flag 를 볼 수 있다. .zip 확장자로 바꾸고, media 폴더에 보면, secret.png 가 있당. 누가 진짜일까? 두 파일은 크기가 같고, 외견상으로 같아보이지만, 바이트단위로 비교해보면 다른 부분이 있다. 그 부분을 모아서 출력하면 된당. 어제 뭐했어? 패킷파일에서 http 를 필터링하고있다. mandu-mandu.shop 사이트에서 받아오는건데, 지금은 없다. 그래서 패킷으로 분석해보면, download.php 를 HTTP stream 으로 follow 하면, 비밀번호가 보이고, music.php 를 tcp stream 으로 follow 하면, PK로 시작하는 zip 파일이 보인다. .. 2021. 4. 28.
[Pwnable.kr] otp 풀이 ulimit 으로 푸는 문제라 하더라고요,, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #include #include #include #include int main(int argc, char* argv[]){ char fname[128]; unsigned long long otp[2]; if(argc!=2){ printf("usage : ./otp [passcode]\n"); return 0; } int fd = open("/dev/urandom", O_RDONLY); if(fd==-1) exit(-1); if(read(.. 2021. 4. 7.
[Reversing.kr] CSHARP 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 private static void MetMetMet(string sss) { byte[] bytes = Encoding.ASCII.GetBytes(Convert.ToBase64String(Encoding.ASCII.GetBytes(sss))); AssemblyName assemblyName = new AssemblyName("DynamicAssembly"); TypeBuilder typeBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderA.. 2021. 3. 20.