완료됨
변수가 필터링 걸렸을 때

안녕하세요.
다음의 부분에서 계속 filtering 되는 거 같은데,
mov(0xc7)을 안써도 변수로 들어간 친구가 0xc7 이 되는것 같은데
어떻게 우회할 수 있을까요?
+) 지금 해당 부분에서 c7로 쓰인게 뭔지 어떻게 알 수 있을까요?
답변주시면 감사드리겠습니다.

1d: 48 01 c7 add %rax,%rdi

1d: 09 c7 or %eax,%edi

const uint8_t banned[] = {
0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8E, // MOV
0xA0, 0xA1, 0xA2, 0xA3, // MOV
0xA4, 0xA5, // MOVS
0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, // MOV
0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, // MOV
0xC6, 0xC7 // MOV
};

#assembly #shellcode
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
avatar
fow
대표 업적 없음

안녕하세요,
현재 문제를 해결하신 것으로 보이나, 추후 질문자분 혹은 다른 분들의 참고 목적을 위해 답변을 남깁니다.

해당 상황의 경우, 어셈블리 결과가 0xc7를 포함하지 않으면서 동일한 동작을 하는 다른 명령어 및 레지스터를 사용하면 되는 것으로 보입니다!
이런 경우에 해당하는 명령어 혹은 그 조합을 찾는 것 또한 문제 해결의 일부에 포함된다고 생각하므로, 답변은 여기에서 줄이도록 하겠습니다.

드림핵에 관심 가져주셔서 감사합니다!

2024.09.23. 16:17