분류 전체보기(363)
-
내 버퍼가 흘러넘친다!!! 풀이
우선 char형 배열 s를 선언합니다. s의 크기는 0x14(10진수로 20)입니다. 그리고 read 함수로 0x32(10진수로 50) 크기의 name을 입력받는데... 저 name은 main 안에 없는거 보면 아마 전역 변수인 것 같습니다. 그리고 gets 함수로 s를 입력받습니다. 일단 name, s 둘 다 오버플로우의 가능성은 있어보입니다. 우선 입력받는 순서대로 name을 먼저 보고, 그다음 s를 보겠습니다. name을 전역 변수라고 생각하고 Shift+F7로 bss 영역을 열어봤습니다. IDA 쓰시는 다른 분들 블로그 보니 단축키가 아주 잘 정리돼있더라고요...ㅎㅎ 감사합니다 역시나 bss영역에 name이 있었습니다. name의 주소는 0x804A060이라고 나와있습니다. 기본적인 정보 수집은 ..
2021.07.12 -
basic_exploitation_000 풀이
#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } int main(int argc, char *argv[]) { char buf[0x80]; initialize(); printf("buf = (%p)\n", buf); scanf("%141s", buf); return 0; } basic_exploitation_000.c 파일의 소스코드입니다. main문부터 차근차근..
2021.07.11 -
basic_exploitation_001 풀이
#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } void read_flag() { system("cat /flag"); } int main(int argc, char *argv[]) { char buf[0x80]; initialize(); gets(buf); return 0; } 이 코드는 basic_exploitation_001.c 파일에 들어있는 소스코드입니다..
2021.07.10 -
The secret of a Queen 풀이
문제에서 주워진 그림을 보니 같은 문자가 여러 개 보입니다. 아마도 한 개의 문자는 어떠한 한 개의 글자를 가리키는 것 같습니다. 만약 제 유추가 맞다면 이 사진만으로는 문제를 풀 수 없으니 구글에 서칭을 조금 해봤습니다. 구글에 "the secret of a queen"이라고 검색한 뒤 이미지에 들어가 보니 이런 사진이 나왔습니다. 근데 이거 저작권 괜찮은건가..? 써도 되는 거겠죠? 이 사진과 문제에서 주어진 사진을 번갈아가며 하나하나 키를 대칭해서 찾았습니다. htb babingtonplot 처음에는 이렇게 답을 찾았습니다. 하지만 Hack The Box에서는 FLAG를 낼 때 HTB{~~~~}의 형식으로 내야한다는걸 생각했습니다. 그래서 모든 문자를 대문자로 바꾸고, 공백을 중괄호로 바꿨습니다. ..
2021.07.09 -
Canvas 풀이
(function(_0x173c04, _0x4e0b6e) { var _0x20fedb = function(_0x2548ec) { while (--_0x2548ec) { _0x173c04['\x70\x75\x73\x68'](_0x173c04['\x73\x68\x69\x66\x74']()); } }, _0x544f36 = function() { var _0x4c641a = { '\x64\x61\x74\x61': { '\x6b\x65\x79': '\x63\x6f\x6f\x6b\x69\x65', '\x76\x61\x6c\x75\x65': '\x74\x69\x6d\x65\x6f\x75\x74' }, '\x73\x65\x74\x43\x6f\x6f\x6b\x69\x65': function(_0x35c856, _0x1..
2021.06.19 -
x64 Buffer Overflow 풀이
int __cdecl main(int argc, const char **argv, const char **envp) { char s; // [rsp+10h] [rbp-110h] int v5; // [rsp+11Ch] [rbp-4h] _isoc99_scanf("%s", &s, envp); v5 = strlen(&s); printf("Hello %s\n", &s); return 0; } int callMeMaybe() { char *path; // [rsp+0h] [rbp-20h] const char *v2; // [rsp+8h] [rbp-18h] __int64 v3; // [rsp+10h] [rbp-10h] path = "/bin/bash"; v2 = "-p"; v3 = 0LL; return execve(..
2021.06.16