완료됨
변수가 필터링 걸렸을 때
안녕하세요.
다음의 부분에서 계속 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
fow
대표 업적 없음
안녕하세요,
현재 문제를 해결하신 것으로 보이나, 추후 질문자분 혹은 다른 분들의 참고 목적을 위해 답변을 남깁니다.
해당 상황의 경우, 어셈블리 결과가 0xc7
를 포함하지 않으면서 동일한 동작을 하는 다른 명령어 및 레지스터를 사용하면 되는 것으로 보입니다!
이런 경우에 해당하는 명령어 혹은 그 조합을 찾는 것 또한 문제 해결의 일부에 포함된다고 생각하므로, 답변은 여기에서 줄이도록 하겠습니다.
드림핵에 관심 가져주셔서 감사합니다!