본문 바로가기

분류 전체보기264

(HackCTF) Adult_FSB writeup int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { int i; // [rsp+Ch] [rbp-144h] char buf[312]; // [rsp+10h] [rbp-140h] BYREF unsigned __int64 v5; // [rsp+148h] [rbp-8h] v5 = __readfsqword(0x28u); Init(); for ( i = 0; i next; if (*listp != NULL) /* Don't free the last element in the chain, this is the statically allocate element. */ free (cur); ~~~ 대충 *listp→next 가 nul.. 2022. 2. 24.
(HackCTF) ChildFSB writeup int __cdecl main(int argc, const char **argv, const char **envp) { char buf[24]; // [rsp+0h] [rbp-20h] BYREF unsigned __int64 v5; // [rsp+18h] [rbp-8h] v5 = __readfsqword(0x28u); Init(argc, argv, envp); puts("hello"); read(0, buf, 0x19uLL); printf(buf); return 0; } baby fsb 문제는, leak&got overwrite 으로 __stack_check_fail 함수에서 메인으로 돌린 뒤, 릭한 주소로 onegadget 을 구해 __stack_check_fail@got 에 덮었다. 이번엔 input.. 2022. 2. 24.
(HackCTF) wishlist writeup TL;DR, no heap ex, ROP with stack pivoting puts("1. make wish"); puts("2. view wish"); puts("3. remove wish"); make, view, remove 할 수 있는 heap challenge __int64 sub_4008A7() { char buf[16]; // [rsp+0h] [rbp-10h] BYREF printf("input: "); read(0, buf, 0x20uLL); return (unsigned __int8)buf[0]; } 1,2,3 번호입력할 떄 사용하는 함수. buf[0] 을 리턴하긴 하지만 ret address 까지 덮을 수 있다. 수상하다 1. make __int64 sub_400910() { int .. 2022. 2. 24.
(BOJ) 1992 풀이 #include using namespace std; int ar[65][65]; void quad(int n,int x,int y){ if(x==1){ cout 2022. 2. 23.