Write up (Wargame)/Pwnable

Write up (Wargame)/Pwnable

[Dreamhack Wargame] Guest book 풀이

보호되어 있는 글입니다.

Write up (Wargame)/Pwnable

[pwnable.xyz] GrownUp 풀이

분석 checksec 결과 18세 이상인지 물어보고 아니면 종료시킨다, IDA에선 이렇게 되어있고 이번엔 win 함수가 없다. 흑.. https://tribal1012.tistory.com/39 LOBYTE, BYTE1, HIBYTE 매크로 LOBYTE : 가장 하위 1바이트를 말함, 리틀엔디안으로 들어간 메모리 값 중 가장 오른쪽 값? BYTE1 : 리틀엔디안으로 들어간 메모리 값 중 오른쪽 2번째 값? BYTE2 : 리틀엔디안으로 들어간 메모리 값 tribal1012.tistory.com Y인 경우에 이름을 입력받는데 동적할당한다. 해당 주소에 입력하고 usr에 strcpy를 한다(overflow가능?) 그리곤 welcome 이후에 printf한다. printf에서 포맷스트링이 bss에 있다는 점이 ..

Write up (Wargame)/Pwnable

[pwnable.xyz] misalignment 풀이

이번 문제는 misalignment인데, 드림핵 master_canary를 풀이하려다가 계속 이해가 안 돼서(아니 이게 왜 안됨?) xyz를 풀기로 했다. 이것도 안되면 어쩔 수 없고..ㅠ 분석 쓰다보니 생각났는데 노션이나 다른게 더 이쁘다. 역시 티스토리는 이제 거를 때가 온다. 일단 보호기법은 다 걸려있다. IDA에서는 win이라는 함수가 있고 이를 실행시켜야 하는 듯. 코드를 이해하려면 포인터 이해가 필요..! 경계를 잘못 지정해서 s[1]에 마지막 부분 0x0000000000000000 에서부터 s[2] 0x0000000000000000 까지 0xDEADBEEF 를 대입한다. 그렇게 대입이 되면 s[1] s[2] 순서로 0xEF00000000000000 0x0000000000DEADBE 이렇게 들..

Write up (Wargame)/Pwnable

[Dreamhack Wargame] Bypass SECCOMP-1 풀이

이제 풀이를 잘 공개하지 않으려 했는데, 이건 커리큘럼에 있는 문제이고 shellcraft 설명이 (shellcode 설명 때부터) 미흡한 부분이 있어서 그냥 블로그에 글을 쓰고자 한다. system hacking advanced 에 있는 문제이다. 분석 // Name: bypass_syscall.c // Compile: gcc -o bypass_syscall bypass_syscall.c -lseccomp #include #include #include #include #include #include #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } void sandbox() { scmp_filter_..

Write up (Wargame)/Pwnable

[pwnable.xyz] add 풀이

분석 이번에는 웬일로 바이너리에 checksec을 해보면 RELRO가 Partial. PIE가 없다. 64bit 바이너리 그리곤 이렇게 input도 있다. 이제 ida를 보자 주석도 좀 달고 했는데 canary를 입력받아두고 0x50만큼을 memset으로 0으로 덮어버린다 canary까지는 아니다 어차피 크기가 0x60이라서 scanf는 아무래도 입력받은 인자 수를 반환하는 듯 하니 3개의 숫자를 입력해야하는 것 같고 v7으로부터 [v6]번째 인덱스에 v4+v5를 대입한다. 그리고 win이라는 함수도 존재한다. got등을 덮을 때 이걸로 덮으면 되겠다. 풀이 v4는 rbp-0x78 v5 는 0x70 v6 0x68 v7은 0x60에 있다. 흠 .. gdb를 보아하니.. got가 아니라 ret를 덮어야 할 ..

Write up (Wargame)/Pwnable

[pwnable.xyz] sub 풀이

분석 64bit 바이너리이고 이번에도.. 다 걸려있다. ㅠㅠㅠㅠㅠㅠ 점점 보호기법에 익숙해져야 하는걸까 실행시키면 이상한게 뜬다 ida로 열어보면 카나리를 받고 buffer을 없애는 initial과 이제 입력받는게 v4, v5를 입력받는거였는데 %u인거 보니까 unsigned도..? 받는거 같은데 v4와 v5는 int 형으로 singed..로 되어있다. v4가 4918(0x1336)보다 작거나 같고 v5도 4918보다 작거나 같은데 v4-v5는 4919 (0x1337)이 되어야 한다. 음.. v4에 4918 넣고 v5에 -1 넣으면 안되나? 풀이 ? ? from pwn import * #p = process('./challenge') p = remote('svc.pwnable.xyz', 30001) p...

Write up (Wargame)/Pwnable

[pwnable.xyz] welcome 풀이

https://pwnable.xyz/challenges/ pwnable.xyz If all pwnables could be just note taking, menu driven, x86 binaries... pwnable.xyz 분석 첫 문제는 welcome 서버가 다운되었어서 플래그를 제출하진 못했으나 이젠 된다. 처음 checksec을 했는데 너무나 무서운 상대 그리고 처음 보는 FORTIFY.. 메모리 버퍼에서 bof가 발생하는 것을 잡는다고 하는데 뭔지는 잘 모르겠다. 풀이 size[1]은 canary가 있을 곳이고 leak: %p 부분에서 v3의 주소를 알려주는데 아무래도 스택 영역의 주소이다. 그리고 size에 값을 입력받고 입력받은 사이즈만큼 malloc 한다. size는 unsigned i..

그믐​
'Write up (Wargame)/Pwnable' 카테고리의 글 목록 (4 Page)