본문 바로가기

study

(27)
마음만 웅장한 영어 계획 이제 더이상 미룰 수 없는 것들이 있다. 그것은 바로 공부,,,, 미루고, 또 미루고, 또또 미뤄서 이지경에 와서야 과거의 과오를 되돌릴려고 하고 있다... 첫 번째로 할 영어 공부는 스타트 토익 복습! 예전에 스터디 했던 건데, 다 야금야금 까먹어서 복습하면 딱인듯 READING 에 20일 LISTENING에 20일 이니까 하루에 각각 2일씩 복습/정리 하면 될 것 같다 할 수 있을 까,,,, 극 J인 나는 오늘도 계획을 세운다...
[정보보호, 보안] 정보보호란? 정보보호 정의 "정보의 수집, 가공, 저장, 검색, 송신, 수신 중에 발생하는 정보의 훼손, 변조, 유출 등을 방지하기 위한 관리적, 기술적 수단 또는 그러한 수단으로 이루어지는 행위" => 기밀성, 무결성, 가용성, 인증성, 부인방지를 보장하기 위하여 기술적, 물리적, 관리적 보호 대책을 강구하는 것 정보보호의 목표 - NIST의 컴퓨터 보안 정의 정보시스템의 지원(하드웨어, 소프트웨어, 펌웨어, 정보/데이터, 통신)의 무결성, 가용성, 기밀성을 보전하고자 하는 목표 달성을 위해 자동화된 정보 시스템에 제공하는 보호 -> 컴퓨터 보안에 있어서 가장 핵심이 되는 3가지 주요 목표 : 기밀성, 무결성, 가용성 정보보호의 목적/목표 : 기밀성, 무결성, 가용성, 인증성, 부인방지 1. 기밀성 (Confide..
[HackCTF] 내 버퍼가 흘러넘친다!!! ctf.j0n9hyun.xyz/challenges#%EB%82%B4%20%EB%B2%84%ED%8D%BC%EA%B0%80%20%ED%9D%98%EB%9F%AC%EB%84%98%EC%B9%9C%EB%8B%A4!!! HackCTF Do you wanna be a God? If so, Challenge! ctf.j0n9hyun.xyz 1. prob1 파일의 보호기법을 확인하기 - NX : disabled -> stack에 실행권한이 존재한다는 의미 2. IDA로 디컴파일 해보기 - main() 함수 외에 전부 기본적인 함수들 - 7번째 줄 read() 함수로 name 변수에 50(0x32)Byte 만큼 입력값을 읽어서 넣어줌 -> name은 main() 함수내에 선언된 변수가 아니다. - name 변수를 더블..
[HackCTF] Basic_BOF #2 ctf.j0n9hyun.xyz/challenges#Basic_BOF%20#2 HackCTF Do you wanna be a God? If so, Challenge! ctf.j0n9hyun.xyz 1. IDA로 파일을 열어서 디컴파일하기 - 포인터 v5은 sup() 함수를 가리키고 있음 - sup() 함수에서 s의 주소값을 리턴 => v5은 변수 s를 가리킴 - main() 함수의 7번째 줄을 확인하면 s 변수에 입력값 133Byte를 넣어주는 코드이다. 하지만 v5와 s 변수의 주소공간의 차이는 128Byte로 133byte를 입력하면 변수 s 주소공간을 넘쳐서 v5에 쓰인다. 2. 사용되지 않은 함수 발견 - 사용되지 않은 shell() 함수를 발견 하였고, 실행시 쉘 코드를 실행시키는 system()..
[HackCTF] Basic_FSB 1. 파일을 다운받고 디컴파일 int __cdecl main(int argc, const char **argv, const char **envp) { setvbuf(stdout, 0, 2, 0); vuln(); return 0; } int flag() { puts("EN)you have successfully modified the value :)"); puts(aKr); return system("/bin/sh"); } int vuln() { char s; // [esp+0h] [ebp-808h] char format; // [esp+400h] [ebp-408h] printf("input : "); fgets(&s, 1024, stdin); snprintf(&format, 0x400u, &s); ret..
[취약점/공격] Format String Attack (FSB) Format string bug(FSB) : 포맷 스트링을 이용한 공격 기법으로 print()함수의 취약점을 이용한다. Format String Bug는 개발자의 실수로 print(buf) 이렇게 사용했을 때 입력값을 포맷 스트링으로 넣으면 입력값을 문자로 취급하는게 아닌, 서식 문자로 취급하여 취약점일 일어날 수 있다. EX fgets(bug, sizeof(buf), stdin) printf(buf) buf가 문자열일 때는 정상적으로 문자열로 인식하지만 서식문자를 넣었을 경우 문자열로 안보고 서식문자로 인식한다. buf = "string" buf = "%x %s" buf 배열에 서식문자가 있을 경우, buf 배열을 가리키는 주소의 다음 4바이트 위치를 참조하여 그 서식 문자의 기능대로 출력한다. For..
[HackCTF] Pwnable - RTL_World 1. rtl_wold 파일을 다운받아서 IDA로 디컴파일 하기 + 코드 해석하기 main() int __cdecl main(int argc, const char **argv, const char **envp) { int result; // eax int v4; // [esp+0h] [ebp-A0h] int v5; // [esp+10h] [ebp-90h] char buf; // [esp+14h] [ebp-8Ch] void *v7; // [esp+94h] [ebp-Ch] void *handle; // [esp+98h] [ebp-8h] void *s1; // [esp+9Ch] [ebp-4h] setvbuf(stdout, 0, 2, 0); handle = dlopen("/lib/i386-linux-gnu/lib..
dynamic library - dlopen(), dlsym(), dlclose() UNIX/LINUX에서 shared library 또는 shared object를 compile 때가 아닌 runtime때 동적으로 메모리에 loading 하여 함수를 실행하기 위해서는 dlopen(), dlsym(), dlclose() 등을 이용하여 수행 할 수 있다. #include void *dlopen (const char *filename, int flag); const char *dlerror(void); void *dlsym(void *handle, const char *symbol); int dlclose (void *handle); - dlopen() #include void *dlopen(const char *filename, int flag); 사용목적 : C언어에서 프로그램을 개발할..