64bit fsb
Adult_FSB (64bit fsb, exit)
exit함수 내부적으로 free 호출하는 것에 대한 글을 쉽게 찾아서 쉽게? 풀었던 것 같다. Writeup File information Code Main int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { signed int i; // [rsp+Ch] [rbp-144h] char buf; // [rsp+10h] [rbp-140h] unsigned __int64 v5; // [rsp+148h] [rbp-8h] v5 = __readfsqword(0x28u); Init(*(_QWORD *)&argc, argv, envp); for ( i = 0; i > 16) & 0xffff one_gadget_high = (one..
ChildFSB (64bit fsb)
원래 풀려던 방법으로는 실패해서 살짝 다르게 풀어보았는데 생각대로 한 번에 풀려서 다행이었다. Writeup File information Code Main int __cdecl main(int argc, const char **argv, const char **envp) { char buf; // [rsp+0h] [rbp-20h] unsigned __int64 v5; // [rsp+18h] [rbp-8h] v5 = __readfsqword(0x28u); Init(); puts("hello"); read(0, &buf, 25uLL); printf(&buf, &buf); return 0; } Main함수의 역할은 다음과 같다. read함수로 buf에 최대 25만큼 입력한다. printf함수로 buf를 ..
babyfsb (64bit fsb)
Writeup File information Code Main int __cdecl main(int argc, const char **argv, const char **envp) { char buf; // [rsp+0h] [rbp-40h] unsigned __int64 v5; // [rsp+38h] [rbp-8h] v5 = __readfsqword(0x28u); setvbuf(_bss_start, 0LL, 2, 0LL); puts("hello"); read(0, &buf, 0x40uLL); printf(&buf, &buf); return 0; } Main함수의 역할은 다음과 같다. read함수로 buf에 최대 64만큼 입력한다. printf함수로 buf를 출력한다 (fsb 발생) Exploit 이 문..
you_are_silver (64bit fsb)
64bit 환경에서의 fsb를 이용하는 문제이다. Writeup File information Code Main int __cdecl main(int argc, const char **argv, const char **envp) { char s; // [rsp+0h] [rbp-30h] int v5; // [rsp+28h] [rbp-8h] unsigned int v6; // [rsp+2Ch] [rbp-4h] setvbuf(stdout, 0LL, 2, 0LL); v6 = 50; puts("Please enter your name"); fgets(&s, 46, stdin); printf(&s, 46LL); v5 = get_tier(v6); printf((const char *)v5); return 0; }..
64bit Format String Bug
지금까지 미뤄뒀던 fsb 쪽을 공부해보았다. 아직 많이 미흡하지만 이후에도 여러 문제를 풀면서 여러 정보를 추가할 예정이다. Format String Bug FSB(Format String Bug) : 포맷 스트링 버그는 취약점 공격에 사용될 수 있는 보안 취약점이며, 포맷팅을 수행하는 printf() 같은 특정한 C 함수들에서 사용자 입력을 포맷 스트링 파라미터 (%d, %n ...)로 사용하는 것으로부터 나온다. 피라미터 종류 위와 같은 피라미터를 입력하면 어떤 일이 일어나는지 예제를 통해 알아보려 한다. TEST CODE #include #include #include int main(void) { char buf[300]; setvbuf(stdin, 0, 2, 0); setvbuf(stdo..