O engenheiro de desenvolvimento de segurança interna da primavera de 2018 escreveu perguntas de teste

1. A assinatura de dados é projetada para garantir

  • Verifique a integridade dos dados
  • Certifique-se de que a fonte de dados é legal

2. As vulnerabilidades que você conhece sobre o front end são

  • XSS
  • CSRF

3. Existem estruturas de gancho móveis

  • xposed
  • Substrato
  • Cydia
  • Frida

4. Ferramentas que podem pegar pacotes de dados são

  • ubertooth
  • tcpdump
  • burpsuite
  • HackRF

5. O que geralmente podemos fazer por meio da interface UART no dispositivo inteligente?

  • Ver informações de depuração do dispositivo
  • Obtenha as permissões do dispositivo

6. Quais das seguintes afirmações sobre processos, threads e corrotinas estão corretas?

  • Thread é heap compartilhado, stack é privado
  • De um modo geral, processo de sobrecarga de execução> thread> co-rotina

7. Quais dos seguintes são registros na função smali

  • p0
  • v0

8. Montagem do braço

Se o código a seguir estiver na função

char dst[32];
strcpy(dst, src);

Se o invasor pode controlar o src da variável de função, as opções que não podem ser implementadas na arquitetura ARM são:

  • Cubra outras variáveis ​​além de dst, mude a lógica do programa
  • Substitua os dados da pilha para construir um ataque ROP
  • Substituir a pilha de chamadas causa um segfault

O que pode ser alcançado é:

  • Substitua o endereço de retorno para pular para o código malicioso copiado pelo invasor para o dst

9. Quais das seguintes tarefas são frequentemente usadas para análise de firmware de dispositivo inteligente:

  • binwalk

10. A função no iOS é semelhante ao esquema de url, mas a segurança é melhor

  • Links universais

11. xor% eax,% eax Qual é o valor de eax após a operação

  • 0000 0000

12. Se houver uma vulnerabilidade de gravação arbitrária no Android, como converter a permissão de gravação em permissão de execução

  • DexClassLoader carrega dinamicamente os arquivos executáveis ​​dex que podem ser gravados pelo aplicativo
  • O método java.lang.Runtime.exec executa o arquivo elf que o aplicativo pode escrever
  • System.load e System.loadLibrary carregam dinamicamente os objetos compartilhados elf que podem ser gravados pelo aplicativo
  • O código nativo usa sistema, popen e outras funções semelhantes para executar o arquivo elf que o aplicativo pode escrever
  • O código nativo usa dlopen para carregar o objeto compartilhado elf gravável pelo aplicativo
  • Utilizar mecanismo Multidex

13. Leia o seguinte código de montagem

66a:  push   %rbp
66b:  mov    %rsp,%rbp
66e:  mov    %rdi,-0x18(%rbp)
672:  mov    %rsi,-0x20(%rbp)
676:  movl   $0x0,-0x4(%rbp)
67d:  mov    -0x4(%rbp),%eax
680:  movslq %eax,%rdx
683:  mov    -0x20(%rbp),%rax
687:  add    %rdx,%rax
68a:  mov    -0x4(%rbp),%edx
68d:  movslq %edx,%rcx
690:  mov    -0x18(%rbp),%rdx
694:  add    %rcx,%rdx
697:  movzbl (%rax),%eax
69a:  mov    %al,(%rdx)
69c:  mov    -0x4(%rbp),%eax
69f:  movslq %eax,%rdx
6a2:  mov    -0x20(%rbp),%rax
6a6:  add    %rdx,%rax
6a9:  movzbl (%rax),%eax
6ac:  test   %al,%al
6ae:  je     6b6 
6b0:  addl   $0x1,-0x4(%rbp)
6b4:  jmp    67d 
6b6:  nop
6b7:  mov    $0x0,%eax
6bc:  pop    %rbp
6bd:  retq  

Nota: O lado direito do código assembly na forma de gnu na questão é o operando de destino e o lado esquerdo é o operando de origem% rdi,% rsi correspondem ao primeiro parâmetro e ao segundo parâmetro, respectivamente

perguntar:

  • Qual função de string o código provavelmente é (strcpy, strlen, strcmp, etc.), escreva o processo de análise.
  • Como essa função é diferente da função string na biblioteca padrão C?

responda:

  • forte
  • O valor de retorno é diferente. A biblioteca padrão retorna o ponteiro de destino. A função retorna 0.

Acho que você gosta

Origin blog.csdn.net/kelxLZ/article/details/111875469
Recomendado
Clasificación