Mi 2018 Spring Intern Safety Development Engineer preguntas escritas de la prueba

1. La firma de datos está diseñada para garantizar

  • Verifique la integridad de los datos
  • Asegúrese de que la fuente de datos sea legal

2. Las vulnerabilidades que conoce sobre la interfaz son

  • XSS
  • CSRF

3. Existen marcos de enganches móviles

  • expuesto
  • Sustrato
  • Cydia
  • Frida

4. Las herramientas que pueden capturar paquetes de datos son

  • ubertooth
  • tcpdump
  • burpsuite
  • HackRF

5. ¿Qué podemos hacer generalmente a través de la interfaz UART en el dispositivo inteligente?

  • Ver información de depuración del dispositivo
  • Obtenga permisos de dispositivo

6. ¿Cuáles de las siguientes afirmaciones sobre procesos, subprocesos y rutinas son correctas?

  • El hilo se comparte en montón, la pila es privada
  • En términos generales, ejecución de proceso de sobrecarga> subproceso> corrutina

7. ¿Cuáles de los siguientes son registros en la función pequeña?

  • p0
  • v0

8. Montaje del BRAZO

Si el siguiente código está en la función

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

Si el atacante puede controlar el src de la variable de función, las opciones que no se pueden implementar en la arquitectura ARM son:

  • Cubrir variables distintas a dst, cambiar la lógica del programa
  • Sobrescriba los datos de la pila para construir un ataque ROP
  • Sobrescribir la pila de llamadas provoca un error de segmentación

Lo que se puede lograr es:

  • Sobrescriba la dirección de retorno para saltar al código malicioso copiado por el atacante en dst

9. ¿Cuáles de las siguientes tareas se utilizan a menudo para el análisis de firmware de dispositivos inteligentes?

  • binwalk

10. La función en iOS es similar al esquema de URL, pero la seguridad es mejor

  • Enlaces universales

11. xor% eax,% eax ¿Cuál es el valor de eax después de la operación?

  • 0000 0000

12. Si hay una vulnerabilidad de escritura arbitraria en Android, cómo convertir el permiso de escritura en permiso de ejecución

  • DexClassLoader carga dinámicamente archivos ejecutables dex en los que la aplicación puede escribir
  • El método java.lang.Runtime.exec ejecuta el archivo elf que la aplicación puede escribir
  • System.load y System.loadLibrary cargan dinámicamente los objetos compartidos elf que la aplicación puede escribir
  • El código nativo usa system, popen y otras funciones similares para ejecutar el archivo elf que la aplicación puede escribir.
  • El código nativo usa dlopen para cargar el objeto compartido elf en el que la aplicación puede escribir
  • Utilice el mecanismo Multidex

13. Lea el siguiente código ensamblador

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: El lado derecho del código ensamblador en forma de gnu en la pregunta es el operando de destino, y el lado izquierdo es el operando de origen% rdi,% rsi corresponden al primer parámetro y al segundo parámetro respectivamente

pedir:

  • En qué función de cadena es más probable que sea el código (strcpy, strlen, strcmp, etc.), escriba el proceso de análisis.
  • ¿En qué se diferencia esta función de la función de cadena en la biblioteca estándar de C?

responder:

  • strcpy
  • El valor de retorno es diferente. La biblioteca estándar devuelve el puntero de destino. La función devuelve 0.

Supongo que te gusta

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