프로그래밍 QnA + 설치 및 활용 QnA + 질문

criny의 이미지

버퍼 오버플로우를 이용한 루트쉘 획득 기법에 관한 궁금증이....있어서 질문 올립니다.

보안 관련해서 처음 해킹관련 지식을 배우고있는 초보 입니다.

제가 현재 보고있는 책에서 버퍼 오버플로우를 이용한 루트쉘을 획득하는 방법을 소개했고,
이방법은 아직까지 널리 쓰이는 해킹방법중 하나라고 설명했는데요...
책에서 소개한 방법은 대략 아래와 같습니다.
======================================
setuid가 설정된 프로그램을 이용해서
euid가 0인 상태에서
프로그램의 허점을 이용하여 "setuid(0), system("/bin/bash")" 코드를 어떻게든 실행해서 루트 쉘을 획득 한다.
======================================

제가 궁금한 것은, 저 방법은
커널을 수정해서
uid가 0이 아닐때에는 setuid 시스템콜을 막아 버리면 되지 않나요?

gildong17778의 이미지

-

Lightstar의 이미지

여러 스레드에서 전역 객체 사용

어떤 처리 함수를 가진 클래스를 전역 변수(객체)로 만들고 여러 스레드에서 그 객체의 함수들을 사용하는건 잘못된건가요?

전역 객체 A에 함수 a랑 b가 있습니다.

스레드1에서 A.a()를 불렀는데 이건 30초가 걸립니다.
10초쯤 지났을 때 스레드2에서 A.a()를 부르면 스레드1이 끝나야 작업을 처리하게되나요? 아니면 스레드1 관계없이 바로 처리시작할 수 있나요?

전역 객체 내부에 전역변수가 선언되어 있으면 물론 여러 스레드에서 전역객체의 그 전역변수의 값을 이용하려고 할 때 문제가 되겠지만 함수도 같은지 궁금합니다.
함수내부에서 변수들을 선언해준건 함수가 실행될 때 만들어져서 사용되는거니 위에서 문제가 없다면 함수내부 변수는 문제가 없을것같습니다 맞나요?

좀 더 나아가면 전역 객체가 아니더라도 어느 클래스의 함수를 같은 객체(인스턴스)를 이용해서 호출할 때 동시에 처리가 안되고 하나가 끝나야 다음 작업을 할 수 있나요?

모지리의 이미지

부모 프로세서가 죽었을때 자식 프로세서가 포트 점유

안녕하세요.

부모 프로세서가 죽는것은 다른 이슈이구요. 부모 프로세서가 죽었을때 자식 프로세서가 TCP 포트를 점유하고 있습니다. fork 할때 어느 부분을 처리 해주어야만 자식 프로세서가 TCP 포트를 점유하지 못하도록 할수 있나요? 리플 달아 주시는분들 복받으실겁니다.

# lsof -i :특정포트

해서 보면 점유되어있는게 보입니다.

gyunn의 이미지

Ubuntu에서 gcc 3.3로 컴파일러를 바꾸고 싶습니다..

커널 컴파일 중에 오류가 떠서
지금 ubuntu에 gcc 버전이 4.8 설치 되있는데.. 3.3으로 바꾸려고 합니다.

apt-get install gcc-3.3 을 입력해도 gcc-3.3 버전이 안깔리고
ftp://ftp.gnu.org/pub/gnu/gcc/여기서 3.3.1 버전의 tar.gz파일을 다운받아도 다음 과정을 모르겠네요

어떻게 하면 tar.gz파일을 압축을 풀고.
usr/bin 디렉토리에 링크가 생기게 할 수 있을까요??

vi08의 이미지

문자열 복사, 붙이기 등의 내부 구현이 궁금합니다.

char str1[3] = {0,};
char* str2 = "World";
char* str3 = new char[3];
memset(str3, 0, sizeof(char)* 3);

strcpy(str1, str2);
strcpy(str3, str1);

cout << str1 << ", " << str3 << endl;

getchar();

delete[] str3;

표준 문자열 함수를 재정의해 보던 중, 묘한 걸 발견했습니다. 바로 위와 같은 짧은 코드 때문이었는데요.

strcpy로 str1과 str3 모두 str2의 "World" 문자열이 복사됨은 물론 출력까지 되더군요. 의외의 결과에 당황하고 말았습니다.

물론 오류 메시지는 떴습니다. str1과 str2의 복사에 대한 오류 메시지 역시 짐작이 가고요. 하지만 str3을 delete하려고 했을 때 오류가 뜨는 건 무슨 영문인지 모르겠네요.

xoduddk123의 이미지

여러개의 tar 명령어를 한번에 쓸수 있나요?

tar로 특정파일을 여러번 압축해제해야할 일이생겼습니다.

임베디드 환경에서 작업을 하다보니 사소한 특정 압축파일을 여러번 압축해제해야하는 경우가 생겼습니다.

압축파일이름은 TEST.tar.gz 입니다. 이 압축파일은 300M정도를 차지하고있습니다.

TEST.tar.gz 압축파일에는 AAA BBB CCC 라는 디렉토리가 존재합니다.

TSET.tar.gz의 세부 디렉터리를 특정위치에 각각 압축을 해제하고자하고있는데

300M라는 압축파일에 여러번 접근하다보니 읽는 시간이 오래걸리는것같습니다.

지금은 각각 AAA와 BBB CCC 라는 디렉터리를 각각 다른 특정위치에 압축을 해제하기 위하여 다음과 같이 하고있습니다.

# tar xvzfp TEST.tar.gz -C /root/test1 AAA
# tar xvzfp TEST.tar.gz -C /root/test2 BBB
# tar xvzfp TEST.tar.gz -C /root/test3 CCC

dltkddyd의 이미지

deque 라는 클래스를 상속받았을 때, 내부에서 꼭 범위연산자를 써야하는지요?

template<typename PTRTYPE>
class sdeque:public deque<PTRTYPE> {
	//진술
	void repop_back(PTRTYPE value) {
		deque<PTRTYE>::pop_back(value);//여기서 범위 연산자를 쓰지 않으면 컴파일 오류가 발생하네요.
	}
};

deque::
범위 연산자를 매번 호출시 사용하지 않고 호출할 수 있는 방법이 있나요? 이거 너무 불편한데요.

지나가는새의 이미지

git 유저용으로 새로운 유저를 만들고 싶은데, shell이 안막아집니다

안녕하세요

제가 git 용으로만 유저를 생성하고 싶습니다.

git command는 ssh를 사용하고 싶고, 다만 shell(telnet, ssh)을 막고 싶은데, 방법이 없을까요?

순수히 git만을 사용할 수 있는 유저를 생성하고 싶은데 잘 안되네요

도움 부탁 드립니다!

dltkddyd의 이미지

deque 에서 clear 호출하면

deque<deque<deque<int>>> obj1;

3차원 배열이 있고 3*3*3의 구조로 메모리를 할당했다고 했을 때, 이 배열에 대해

obj1.clear();

호출하면 할당된 3*3*3 메모리가 모두 삭제되나요? 혹시 메모리 누수가 발생하지 않는지 궁금합니다. 만약 메모리 누수가 발생한다면, 어떻게 메모리를 해제해야 하나요?

페이지

프로그래밍 QnA + 설치 및 활용 QnA + 질문 구독하기