[Whitehat Conference 2024 Quals / pwnable] gf
CTF
attachmentAnalysisBSS의 src에 0xbc바이트를 입력받고 [1], stack의 dest에 0xbb바이트를 memcpy()로 복사하여 [2] stack buffer overflow가 발생한다. Canary가 없기 때문에 ROP가 가능하다.memcpy()에서 애매하게 0xbb바이트를 복사하는 이유를 알기 위해 memcpy() 이후의 stack 메모리를 보면,libc 주소의 상위 3바이트가 저장되어 있는 것을 확인할 수 있다. Libc 주소의 하위 1.5바이트는 고정이기 때문에 중간의 1.5바이트만 brute force하면 libc의 임의 주소로 한 번 return할 수 있다.ExploitationFirst attempt (failed)main()이 return하는 시점에서 rdi에 memc..
[BuckeyeCTF 2024 / beginner-pwn] runway2
CTF
Now with a twist!attachmentAnalysisint get_answer() { char answer[16]; fgets(answer, 0x40, stdin); return strtol(answer, NULL, 10);}0x10바이트 크기의 answer에 0x40바이트만큼 입력받아 Stack buffer overflow가 발생한다.Exploitationint win(int check, int mate) { if (check == 0xc0ffee && mate == 0x007ab1e) { printf("You win! Here is your shell:\n"); fflush(stdout); system("/bin/sh"); }..
[BuckeyeCTF 2024 / pwn] infrequentc
CTF
Struggling with the cryptography section? This C program can perform frequency analysis for you in the blink of an eye!attachmentAnalysis long largest = 0; long counts[256] = {0}; char *text = malloc(600); char filepath[] = "/home/corgo/stats/stats.txt"; // default file to save to char *filename = strrchr(filepath,'/')+1;... for(int i = 0; i text[i]의 type은 char이기 때문에 -0x7f부터 0x..
[BuckeyeCTF 2024 / pwn] D.I.S.A.
CTF
disa is the panicle of high performance and innovative design. 13bit is the future, everything else is pure cope. Embrace the performance and safety of disaattachmentAnalysisvoid interpreter() { char buf[MAX_LEN]; int16_t cells[MAX_VAL_UNSIGNED + 1]; int16_t addr, dat = 0; int16_t tmp; while (1) { fgets(buf, MAX_LEN, stdin); if (strncmp(buf, "NOP", 3) == 0) { ..
[BuckeyeCTF 2024 / pwn] no_handouts
CTF
I just found a way to kill ROP. I think. Maybe?attachmentAnalysis문제에서 자체적으로 system()의 주소를 제공해 주고 [1], v1에 gets()로 입력을 받아 stack buffer overflow가 발생한다 [2].Exploitationsystem()의 주소를 이용하여 pop rdi; ret 가젯과 "/bin/sh"의 주소도 계산할 수 있다. Canary가 없기 때문에 그대로 ROP로 system("/bin/sh")를 호출하면 shell을 획득할 수 있다.ex.py
h0meb0dy_
'CTF' 카테고리의 글 목록