본문 바로가기

Security

[Reversing.kr] Easy Crack [주의] 해당 글에는 풀이 및 정답이 적혀있습니다. 스스로 해결하고 싶으신 분들은 문제를 해결한 후, 이 페이지를 참고하셨으면 합니다 : ) 차분히 디버깅하면서 내가 넣은 값이랑 비교하는 값이랑 확인하면서 풀다보니 flag를 획득했다. 우선 string으로 "Incorrect Password" 인 부분을 찾고 그 함수에서 BP를 걸고 디버깅했다. [ESP+5], 61(=a)와 비교한다. [ESP+5] 값은 입력 값의 2번째 글자다. 그 다음엔, 5y와 "?a"다음 2글자를 _strncmp 함수로 비교한다. "?a5y" 넣으니깐 다음으로 넘어갔다. 반복문을 돌며 "?a5y" 다음 글자들과 "R3versing"을 비교한다. 마지막으로, 가장 처음글자를 45(=E)와 비교한다. 그래서 최종 답은 "Ea5yR3.. 더보기
pwnable.kr Toddler's Bottle 보호되어 있는 글입니다. 더보기
HITCON Training Lab15 Lab15 소스코드를 살펴보자. 이번에는 나눠서 설명하겠다. char nameofzoo[100]; class Animal { public : Animal(){ memset(name,0,24); weight = 0; } virtual void speak(){;} virtual void info(){;} protected : char name[24]; int weight; }; class Dog : public Animal{ public : Dog(string str,int w){ strcpy(name,str.c_str()); weight = w ; } virtual void speak(){ cout 더보기
HITCON Training lab14 lab14 #include #include #include void read_input(char *buf,size_t size){ int ret ; ret = read(0,buf,size); if(ret = 10){ puts("Out of bound!"); _exit(0); } if(heaparray[idx]){ printf("Size of Heap : "); read(0,buf,8); size = atoi(buf); printf("Content of heap : "); read_input(heaparray[idx] ,size); puts("Done !"); }else{ puts("No such heap !"); } } void delete_heap(){ int idx ; char buf[4]; prin.. 더보기
HITCON Training Lab13 Lab13 #include #include #include void read_input(char *buf,size_t size){ int ret ; ret = read(0,buf,size); if(ret content = (char *)malloc(size); if(!heaparray[i]->content){ puts("Allocate Error"); exit(2); } heaparray[i]->size = size ; printf("Content of heap:"); read_input(heaparray[i]->content,size); puts("SuccessFul"); break ; } } } void edit_heap(){ int idx ; char buf[4]; printf("Index :");.. 더보기
HITCON Training lab12 Lab12 #include #include #include #include #include #include #include #include #define TIMEOUT 60 struct flower{ int vaild ; char *name ; char color[24] ; }; struct flower* flowerlist[100] ; unsigned int flowercount = 0 ; void menu(){ puts(""); puts("☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ "); puts("☆ Baby Secret Garden ☆ "); puts("☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ "); puts(""); puts(" 1 . Raise a .. 더보기
House of Force, Unsafe Unlink 원래 HITCON Training Lab11 문제풀이를 정리하려고 했는데, 내 서버 환경의 GLIBC 버전이 2.31이어서 다 막혔다. 그래서 그냥 내가 이해할 수 있게 공격기법만 정리하고 나중에 실습할 수 있는 다른 문제를 풀어볼 예정이다. Lab11 #include #include #include #include #include #include struct item{ int size ; char *name ; }; struct item itemlist[100] = {0}; int num ; void hello_message(){ puts("There is a box with magic"); puts("what do you want to do in the box"); } void goodbye_mess.. 더보기
HITCON Training lab10 (first fit, uaf) First fit? 메모리 할당 알고리즘 중 하나로 First-fit 뿐만 아니라 Best-fit, Worst-fit이 있다. Best Fit은 사용가능한 메모리를 찾고, 그 중 가장 작은 메모리에 할당한다. Worst Fit은 사용가능한 메모리를 찾고, 그 중 가장 큰 메모리에 할당한다. First Fit은 사용가능한 메모리에서 가장 처음 발견한 곳에 할당하는 것을 의미한다. How2Heap, First #include #include #include int main() { fprintf(stderr, "This file doesn't demonstrate an attack, but shows the nature of glibc's allocator.\n"); fprintf(stderr, "glibc .. 더보기