HackCTF(78)
-
HackCTF - 훈폰정음
main함수 int __cdecl main(int argc, const char **argv, const char **envp) { alarm(0x3Cu); setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); setvbuf(stderr, 0LL, 2, 0LL); puts(asc_11C0); while ( 1 ) { menu(); switch ( (unsigned int)off_1214 ) { case 1u: add(); break; case 2u: edit(); break; case 3u: delete(); break; case 4u: check(); break; case 5u: exit(0); return; default: puts(&byte_11F..
2021.12.05 -
HackCTF - Unexploitable #4
__int64 __fastcall main(__int64 a1, char **a2, char **a3) { char s[16]; // [rsp+0h] [rbp-10h] BYREF ((void (__fastcall *)(__int64, char **, char **))init_)(a1, a2, a3); fgets(s, 0x2C, stdin); return 0LL; } 다 풀려있었기에 shellcode를 의도한 문제라고 합리적의심을 할 수 있었다. 처음에 구상은 아래와 같이 했다 SFP를 BSS로 조작해서 shellcode 2번에 나누어서 삽입 shellcode가 있는 주소를 ret 해서 익스 진행 그런데 위와 같이 하다보니 레지스터가 꼬이는 상황이 발생했고, 적절하게 sub rsp, 0x20 을 해줘서 익..
2021.10.15 -
HackCTF - Unexploitable #3
아마 stack 마지막 문제 같다. 후딱 풀어서 ALLCLEAR해야겠다. 코드를 보면 위와 아래와 같다. int __cdecl main(int argc, const char **argv, const char **envp) { char s[16]; // [rsp+0h] [rbp-10h] BYREF setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); fwrite("Impossible RTL ha? Nothing for you!\n", 1uLL, 36uLL, stdout); fgets(s, 256, stdin); return 0; } RTC기법을 이용해서 csu를 참고해야한다. 해당 ELF의 CSU구조는 아래와 같다. .text:00000000004006E..
2021.08.10 -
HactCTF - 풍수지리설
보호되어 있는 글입니다.
2021.07.24 -
HackCTF - ezshell
보호되어 있는 글입니다.
2021.07.13 -
HackCTF - ChildFSB
중간에 버퍼 꼬여서 5시간 걸린 문제이다. FSB공부하는 중이지만 버퍼안꼬였으면 2시간이면 풀 문제였는데 5시간이 걸렸다니 마음이 아프다. 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(); puts("hello"); read(0, buf, 25uLL); printf(buf); return 0; } 버퍼가 공간이 부족하기에 main loop를 만든 후에 나눠서 입력하면 된다. 1. main loop 생성하기(__stack_ch..
2021.07.08