[Zer0pts2020] strcmp fácil
paso
- Inspección de rutina, programa de 64 bits
- Ida de 64 bits está abierto. ¡Un
programa muy simple que compara la matriz a2 con elzer0pts{********CENSORED********}
mismo indicador correcto!
Luego, necesita saber qué operaciones ha realizado a2 antes de ingresar a la función principal. Debería ser porque no es un archivo exe. No puedo ajustarlo. Normalmente, necesito ajustarlo para averiguar dónde realizar la entrada cadena a2. Operación, eché un vistazo a la lista de funciones junto a mí y descubrí que la función con el parámetro a2 se
desplaza hacia la derecha en 3 dígitos, lo que equivale a dividir la cadena en 8 grupos, y el valor correspondiente de qword_201060 se resta. Obtenerzer0pts{********CENSORED********}
Nota: la memoria se almacena como almacenamiento little-endian, por lo que debemos invertir el orden después de convertir la cadena a ascii
enc = "********CENSORED********"
m = [0x410A4335494A0942, 0x0B0EF2F50BE619F0, 0x4F0A3A064A35282B]
import binascii
flag =b"" #由于是字节操作,需要在前面加上b
for i in range(3):
p = enc[i*8:(i+1)*8] #将enc字符串8位一组分开
print(p)
a = binascii.b2a_hex(p.encode('ascii')[::-1]) #将分开后的字符串转每一位转换成ascii,然后逆序
print(a)
b = binascii.a2b_hex(hex(int(a,16) + m[i])[2:])[::-1] #(enc[i]的ascii+m[i])的结果是16进制,[2::]是舍弃开头的0x,然后[::-1]逆序
print(b)
print('\n')
flag += b #拼凑每组还原后的结果
print (flag)