전체 글
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoFVWQ%2FbtrWhuw6nAg%2FFCmodeFCnTAKcPDQP8RJc1%2Fimg.png)
idekCTK 2022 - Typop
1. intro bof + rop + rcu가 복합적으로 이루어져 공부하기 좋은 문제였다. 2. code 2.1. code 2.1.2. main int __cdecl main(int argc, const char **argv, const char **envp) { setvbuf(_bss_start, 0LL, 2, 0LL); while ( puts("Do you want to complete a survey?") && getchar() == 'y' ) { getchar(); getFeedback(); } return 0; } 2.1.2. getFeedback unsigned __int64 getFeedback() { __int64 buf; // [rsp+Eh] [rbp-12h] BYREF __int16 v..
1월 중순에 쓰는 일기
자체평가 : ★☆☆☆☆ 한 해 시작부터 해킹 분야는 망했다 ㅋㅋㅋㅋㅋ 부서 이동 이후에 새로 일을 배워야했기 때문에 거의 공부를 하지 못했다. 리버싱 공부를 하기로 했는데, 툴 들이 회사에서 제대로 돌아가지 않는다는 문제점도 한 몫 했다. 더불어 리버싱 문제들을 보면 수작업 크립토인 경우가 대부분이다. (특정 값을 연산해서 결과가 맞으면 correct인 문제들...) 아무리 리버싱이 프로그램 내의 동작을 확인해서 푸는 문제라곤 하지만 영 재미가 없다. 오히려 게임 핵과 같이 푸는 문제가 진짜 "리버싱"이 아닌가 생각한다. 그래서 목표를 조금 바꿔야할지 고민 중이다. 이번 달까지 조금 더 방법을 찾아보고 정 안되면 분야 또는 목표 자체를 바꿔야겠다. 돈 들어올 일은 없는데 나갈 일은 왜이리도 많은지 모르겠..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbs4fJ1%2FbtrVQpv898x%2F2q88hqfzoRtNKm1hqPoMk1%2Fimg.png)
IRIS CTF - ret2libm
1. intro 2. code 및 분석 2.1. code #include #include // gcc -fno-stack-protector -lm int main(int argc, char* argv) { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); char yours[8]; printf("Check out my pecs: %p\n", fabs); printf("How about yours? "); gets(yours); printf("Let's see how they stack up."); return 0; } 2.2. 분석 제공된 압축 파일을 풀어보면 libc, libm, 문제파일, 소스코드가 포함되어있다. 프로그램을 실행해보..
libc database. local에서 사용해보자.
서론 사실 매번 libc-database libc-database libc.rip 에서 검색해서 사용했는데, local에서 사용할 수 있는 방법이 있다. 예전부터 알고 있었는데 사실 그냥 귀찮아서 자세히 찾아보지 않았었고, 그닥 필요 없을거라 생각해서 안썼는데, CTF를 뛰다 ld 파일을 구하기가 힘들어서 사용하게 되었다. 설치 github를 통해 다운로드 가능하다. GitHub - niklasb/libc-database: Build a database of libc offsets to simplify exploitation GitHub - niklasb/libc-database: Build a database of libc offsets to simplify exploitation Build a dat..
rev-basic-0
1. intro 2. code 및 분석 2.1. code int __cdecl main(int argc, const char **argv, const char **envp) { char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); printf("Input : "); scanf("%256s", v4); if ( (unsigned int)check(v4) ) puts("Correct"); else puts("Wrong"); return 0; } _BOOL8 __fastcall sub_140001000(const char *a1) { return strcmp(a1, "Compar3_the_str1ng") == 0; } 2.2. 분석 앞선..
rev-basic-1
1. intro 2. code 및 분석 2.1. code int __cdecl main(int argc, const char **argv, const char **envp) { char v4[256]; // [rsp+20h] [rbp-118h] BYREF memset(v4, 0, sizeof(v4)); printf("Input : ", argv, envp); scanf("%256s", v4); if ( compare(v4) ) puts("Correct"); else puts("Wrong"); return 0; } _BOOL8 __fastcall sub_140001000(_BYTE *a1) { if ( *a1 != 'C' ) return 0i64; if ( a1[1] != 'o' ) return 0i64;..
2022년을 떠나보내며
자체평가 : ★★★★☆ 올해도 이제 마지막 날이다. 올해 나는 무엇을 이루었고 무엇을 얻었는가. 목표했던 것들은 대부분 이루었다. 이에 대해서는 만족할만하다고 생각한다. 또한 약 반년간 해킹 공부를 하면서 지금까지 수년간 삽질했던 것과 대비해서 실력이 많이 늘어난 것은 확실하다. 다만, 한발만 더 나가면 어디 가서 해커라고 말할 수 있을 것 같은데, 그 한발을 올라서기 힘든 상황이다. pwnable 쪽은 확실히 직관력이 많이 요구되는 문제들이 많은데, 이것이 부족한 느낌을 많이 받는다. 예를 들자면 어디가 취약점인지 찾아냈지만 이것을 어떻게 잘 이용해야할지 잘 모른다거나, 어느정도 풀다가 막히는 부분이 생기면 더이상 나아가지 못할때이다. 지금도 높은 난이도가 아닌데도 불구하고 두 세문제가 중간쯤 풀어놓고..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoWvxn%2FbtrUVjc45Al%2F8tJfDpj7N7u7LHOMQhCcUk%2Fimg.png)
coin1
1. intro 2. code 및 분석 2.1. code 별도 코드 없음. 2.2. 분석 --------------------------------------------------- - Shall we play a game? - --------------------------------------------------- You have given some gold coins in your hand however, there is one counterfeit coin among them counterfeit coin looks exactly same as real coin however, its weight is different from real one real coin weighs 10, counter..