목록분류 전체보기 (66)
ghkdtlwns987
마이크로소프트는 윈도우 패치를 통해 취약점을 줄였다. 하지만 아직도 취약점은 86개로 많이 존재한다. 그 중에서 치명적 취약점이 11개, 원격 코드 실행 취약점이 21개 로 아직도 상당히 많다는 것을 알 수 있다.
류크 렌섬웨어가 주로 악성 코드 바자라는 로더가 주로 활용되는데, 주로 러시아 해커 소행이라고 생각된다. 류크 페이로드 암호화까지 걸리는 시간은 평균 29시간이다.
이번엔 _IO_flush_all_lockp 함수로 Exploit 하는 방법에 대해 공부해보도록 하겠다. #define fflush(s) _IO_flush_all_lockp (0) fp = (_IO_FILE *) _IO_list_all; while (fp != NULL) { run_fp = fp; if (do_lock) _IO_flockfile (fp); if (((fp->_mode _IO_write_ptr > fp->_IO_write_base) #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T || (_IO_vtable_offset (fp) == 0 && fp->_mode > 0 && (fp->_wide_data->_IO_write_ptr > fp->_wide_da..
이번엔 fclose() 함수를 분석해보도록 하겠다. fclose() 함수의 소스는 다음과 같다. int _IO_new_fclose (FILE *fp) { int status; CHECK_FILE(fp, EOF); #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) /* We desperately try to help programs which are using streams in a strange way and mix old and new functions. Detect old streams here. */ if (_IO_vtable_offset (fp) != 0) return _IO_old_fclose (fp); #endif /* First unlink the stream..
FSOB 에 대해 공부해보도록 하자. 사실 이전에 _IO_File_vtable2 , _IO_File_vtable_check 글에서 Exploit 했던 것이 바로 FSOB 이다. 하지만, FSOB 라고 따로 언급하지도 않았고, 그다지 자세히 설명하지 않았기 때문에, 이번글에서 정리해보고자 한다. 다음은 FILE * fp 구조체이다. struct _IO_FILE { int _flags; /* High-order word is _IO_MAGIC; rest is flags. */ #define _IO_file_flags _flags /* The following pointers correspond to the C++ streambuf protocol. */ /* Note: Tk uses the _IO_read_..
저번에 Ubuntu16.04 부터는 vtable_check 루틴이 생겨서 vtable을 그대로 덮을 수 없다고 했다. 이번엔 그 vtable_check 루틴을 어떻게 bypass 하는지 알아보도록 하자. 다음은 vtable_check 루틴이다. static inline const struct _IO_jump_t * IO_validate_vtable (const struct _IO_jump_t *vtable) { uintptr_t section_length = __stop___libc_IO_vtables - __start___libc_IO_vtables; uintptr_t ptr = (uintptr_t) vtable; uintptr_t offset = ptr - (uintptr_t) __start___li..
저번에 _IO_FILE_vtable 에 대해 알아보았다. 이번엔 이를 가지고 어떻게 Exploit 을 하는지, 나아가 _IO_list_all 에 대해 공부해보도록 하겠다. 너무 길어진다면 끊겠지만, 내용이 적으면 _IO_FINISH 함수와 _IO_overflow 함수로 Exploit 하는 방법에 대해 다루도록 하겠다. 1. 먼저 _IO_FILE_vtable을 덮어 Exploit 하는 방법에 대해 다루도록 하겠다. 다음은 드림핵에 있는 코드를 가져와 보겠다. // gcc -o fp_vtable fp_vtable.c #include #include #include char name[256] = "\0"; FILE *fp = NULL; void getshell() { system("/bin/sh"); } in..
이번엔 _IO_FILE_vtable 에 대해 다뤄보고자 한다. _IO_FILE 이라 하면 파일 포인터(fp) 가 생각나는게 일반적이다. 하지만 _IO_FILE 은 그보다 더 많은 정보를 포함하고 있다. 예를 들자면 read,write,fread,write... 와 같은 함수를 사용하면 내부적으로 _IO_FILE 구조체를 참고하게 되는 것이다. _IO_FILE 더보기 struct _IO_FILE { int _flags;/* High-order word is _IO_MAGIC; rest is flags. */ /* The following pointers correspond to the C++ streambuf protocol. */ char *_IO_read_ptr;/* Current read pointe..
보호되어 있는 글입니다.
#include #include #include #include #include using namespace std; 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