셀코드 작성을 이렇게 하는게 맞나요?

저는 일단 아래의 방법으로 해서 성공했긴했는데 영 아닌거같아서...

  1. objdump -d 로 hex 로 된 코드를 뽑아내서
  2. 댓글대로 \x0a 이렇게 바로 넣으면 안되서 (원래 안되는거 아닌가요?) 아래 코드를 이용해 따로 파일로 뺀 후
void BinaryToShellCode()
{
	ofstream file("shellcode");
	string in;
	while(1)
	{
		cin >> in;
		if (cin.eof()) break;
		stringstream str(in);
		string tmp;
		char binary;
		while (!str.eof())
		{
			str >> tmp;
			binary = std::stoi("0x"+ tmp, nullptr, 16);
			file << binary;
		}

	}
	file.close();
}
  1. nc host1.dreamhack.games 23497 < shellcode 이렇게 리디렉션으르 걸기

보통은 어떻게 쉘코드를 뽑아내나요?

#pwnable
작성자 정보
답변 1
5unkn0wn
강의 수강: 50

수행하신 objdump로 hex 코드를 뽑으셔도 괜찮습니다. 다만 쉘코드를 입력할 때 "\x" 부분을 직접 문자로 입력하게 되면 문자 자체로 인식되기 때문에 이를 파이썬과 같이 이스케이핑해서 출력될 수 있도록 해야 합니다.

예를 들어 (python -c 'print("\x31\xc0...")';cat) | nc host1.dreamhack.games 23497 과 같이 해주셔야 합니다.

2022.02.11. 02:54
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기