본문 바로가기

전체 글

(56)
C++ "undefined reference to" 에러 c++ 프로그램을 만들던 중 아래와 같은 에러가 발생했다. 구글링해보니 가상함수를 선언해놓고, 상속받은 클래스에서 정의하지 않으면 뜨는 에러라고 한다. 그래서 상속받은 객체를 다 찾아보았으나 문제가 없었다. 몇 번 삽질을 하다가 원인을 알아냈다. 가상함수를 선언할 때 0으로 초기화하지 않아서 발생한 에러였다. 가상함수를 0으로 초기화한 후 다시 컴파일하니 문제없이 컴파일되었다.
2017 codegate / js_world spider monkey의 소스 코드를 취약하게 패치하여 임의로 취약점을 만들었다. 수정 전 코드. //mozjs-24.2.0/js/src/jsarray.cpp JSBool js::array_pop(JSContext *cx, unsigned argc, Value *vp) { CallArgs args = CallArgsFromVp(argc, vp); /* Step 1. */ RootedObject obj(cx, ToObject(cx, args.thisv())); if (!obj) return false; /* Steps 2-3. */ uint32_t index; if (!GetLengthProperty(cx, obj, &index)) return false; /* Steps 4-5. */ if (index..
윈도우 악성코드 분석 보호되어 있는 글입니다.
PINTOOL for CTF / codegate 2020 prequal simple machine 워게임이나 실시간 CTF에서 가끔 "input check" 문제가 등장한다. 사용자가 flag를 입력하면 "OK" 등의 문자열을 출력하는 프로그램이다. 시간 제약이 있는 실시간 CTF에서 이러한 문제에 시간을 적게 들이고 풀 수 있다면 좋을 것 같았다. PINTOOL을 이용하여 실행되는 명령어 수를 측정하여 input check 문제를 side channel attck으로 풀어보았다. COMPILE inscount.so pin은 아래 링크에서 다운로드할 수 있다. https://software.intel.com/en-us/articles/pin-a-binary-instrumentation-tool-downloads 리눅스용 압축파일을 다운로드 후 압축해제를 하면 아래와 같은 파일들이 나온다. pin은 p..
defcon 2015 / thing2 보호되어 있는 글입니다.
HSCTF / hard_heap keyword : stdin structure, unsorted bin attack GLIBC version : 2.23 checksec main 함수는 아래와 같다. sice에서 청크를 할당하고 값을 쓸 수 있다. Observe에서 할당한 청크에 저장된 값을 볼 수 있다. antisice에서 할당된 청크를 해제한다. void __fastcall __noreturn main(__int64 a1, char **a2, char **a3) { int *v3; // rsi int v4; // [rsp+4h] [rbp-Ch] unsigned __int64 v5; // [rsp+8h] [rbp-8h] v5 = __readfsqword(0x28u); setvbuf(stdin, 0LL, 2, 0LL); setvbuf(..
blind sql injection 보호되어 있는 글입니다.
HackTM CTF 2020 / Trip_to_trick GLIBC : 2.29 checksec : file descriptor에 관한 문제이다. main 함수의 흐름은 다음과 같다. sandbox and nohack setbuf stdin stdout stderr leak system's address two chance of AAW close stdin stdout stderr int __cdecl main(int argc, const char **argv, const char **envp) { _QWORD *ptr; // [rsp+18h] [rbp-18h] __int64 value; // [rsp+20h] [rbp-10h] unsigned __int64 v6; // [rsp+28h] [rbp-8h] v6 = __readfsqword(0x28u); valu..