본문 바로가기

Security

[systemhacking] Uninitialized value

반응형
#include <iostream>
class S {   
    int c;
    public:
      int f(int i) const { return i + c; }
};
int f() {
    S s;
    return s.f(10);
}
int main(void) {
    int val = f();
    std::cout << val << std::endl;
}
  • s.f(10) 호출할 떄 , c가 참조되는데 초기화되지 않았기 떄문에 메모리 릭이 생김.
  • 스택 메모리의 잔여값이 저장됨.
#include <iostream>
class S {
public:
    S() : mem(0), mem_size(0) { }
    S(int mem_size) {
        this->mem_size = mem_size;
        if(mem_size > 0){
            this->mem = new char[mem_size];
        }
    }
    char *mem;
    int mem_size;
};
int main(void){
    S s(-1);
    std::cout << s.mem << std::endl;
}
  • 만약 mem_size에 음수가 전달되면 mem은 초기화되지 않기 때문에 스택에 있는 잔여 메모리가 쓰여짐.

 

 

반응형

'Security' 카테고리의 다른 글

[systemhacking] ELF 동적 디버깅  (0) 2021.11.24
[systemhacking] logical bugs  (0) 2021.11.23
[systemhacking] Buffer overflow c++  (0) 2021.11.22
[systemhacking] Integer Issues  (0) 2021.11.22
[systemhacking] Memory corruption  (0) 2021.11.18