WarGame/exploit-exercises.com-fusion(3)
-
exploit-exercise Fusion level-02
처음에 엄청 삽질해서 멘탈붕괴되다가 ROP다시한번 개념 제대로 잡자는 생각으로 풀었던 문제였다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576#include "../common/common.c" #define XORSZ 32 void cipher(unsigned char *blah, size_t len){ static int keyed; static unsigned int keybuf[XORSZ]; int blocks; unsigned int *blahi, j; if(keyed == 0) { in..
2018.08.14 -
exploit-exercise Fusion level-01
fusion1번 문제입니다. 처음에 jmp esp라는가 어째서 내 쉘코드를 실행시키는지 확실하지않아서 조사를 많이해봐서 이를 요약해서 알려드리겠습니다. 먼저 소스코드입니다. 취약점은 이전문제와 같이 realpath내에 memset이 있기때문에 발생하는 취약점으로 판단됩니다. 일단 문제 조건은 : ASLR만 걸려있습니다. 따라서 스택내에서 실행권한이 있는것이죠 1. jmp esp 가젯을 찾는다.2. 리턴값에 jmp esp를 준다.3. esp가 가르키는 위치는 $"jmp esp"로 바뀐다.4. 이때 esp는 바로 자기자신 위에있는 함수를 스택의 끝주소로 판단한다.-> esp란 ? 하나의 스택 프레임의 끝 지점 주소가 저장된다. PUSH, POP 명령어에 따라서 ESP의 값이 4Byte씩 변한다 5. 따라서 ..
2018.08.12 -
exploit-exercise Fusion level-00
맞습니다.. 다음과제는 exploit-exercise funsion이였습니다 :) lob와 비슷해보이는데 조금더 리얼한 코드같습니다. 코드를 먼저확인하죠. 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include "../common/common.c" int fix_path(char *path){ char resolved[128]; if(realpath(path, resolved) == NULL) return 1; // can't access path. will error trying to open//취약점 각 becuase memcmp strcpy(path, resolved);} char *parse_..
2018.08.10