MRCTF (re 和 crypto) wp

RE:
1. PixelShooter (je n'ai pas vraiment regardé ce jeu, c'est sanglant, alors ne faites pas tout, ne continue pas à mourir. Cette question est très facile à écrire.) L'
unité est généralement écrite en c #, ce qui se trouve être apk. avec dnspy décompiler un regard, trouvé dans le code source du drapeau, si vous voulez installer apk, jouer avec, puis viennent les indices sera mieux, puis aller voir cette classe de contrôle, généralement le code de base là

Insérez la description de l'image ici
deux. here à go:
Il n'y a pas de confusion dans cette question. Vous pouvez trouver directement la fonction d'entrée. À l'époque, la question ne recherchait que la chaîne. La caractéristique linguistique de go est que les chaînes sont serrées ensemble. Il n'y a pas de barre oblique inverse 0 et ida ne peut pas la reconnaître. , Je ne peux donc trouver que la fonction d'entrée pour l'analyse. J'en ai été dissuadé auparavant. En fait, c'est assez simple. Si vous pouvez comprendre la fonction de go, c'est déroutant en dehors de l'école et la fonction d'entrée est introuvable. La table des symboles est supprimée et un script peut être utilisé pour la restaurer.
Après avoir regardé le wp du grand frère, vous pouvez en juger par l'intervalle. Il est compilé sous linux et peut être restauré

Insérez la description de l'image ici
dans la fonction principale. La logique est toujours lisible, bien que Un tas 2333 nombre ne savent pas, mais le point dans cette variable, a découvert le drapeau
Insérez la description de l'image ici
le reste des questions et l' échange maître lin depuis longtemps, je me sens beaucoup appris, mais ida l' erreur toujours ah ah ah ah, l'Internet est une dynamique Andrews , exe trop peu, moins de Baidu, l' autisme, et de continuer à vérifier demain , à
trois .junk
Cette question est mon inverse depuis longtemps. Grâce à cette question, j'ai appris le charme du débogage dynamique. Surtout après avoir ajouté les instructions de fleur, ida ne peut pas F5, le débogage dynamique est très parfumé. Cette question a le même nom que junkcode. Sans oublier que la question d'Ang Brother est vraiment impertinente, et ma version d'ida a toujours des bogues. Elle ne peut pas être déboguée localement, mais ne peut être déboguée qu'à distance. Elle peut être considérée comme de multiples réflexions à l'avenir. Je n'ai jamais rencontré cette variante de base64 auparavant. Il semble qu'il ne soit pas difficile de télécharger exp. Je l'ai appris maintenant. Je veux vraiment être patient. Quelques claviers de raccourcis courants pour le débogage dynamique sont alt + ctrl + k: patch; c est converti en code, d est converti en données (le maître semble être plus Comme pour utiliser d), la touche p pour créer une nouvelle fonction

Insérez la description de l'image ici
Comparez d'abord la longueur de la chaîne, corrigez-la, puis poursuivez le débogage.
Insérez la description de l'image ici
Chaque caractère est XOR 3
Insérez la description de l'image ici
pour ajuster le décalage vers la gauche ou la droite en fonction du nombre de fois,
puis appelez une fonction FB1090, qui
Insérez la description de l'image ici
est une variante de base64, le dictionnaire est modifié, ou lorsque vous recherchez une chaîne, vous trouverez un dictionnaire base64 déformé, ce En regardant à nouveau les citations, vous pouvez essentiellement deviner.
Insérez la description de l'image ici
Voici une comparaison. La pile du milieu est complètement inutile. Ang Brothers est génial. Je sens que j'ai beaucoup appris.
Ainsi, le processus de déchiffrement du script devient ici la première variante de déchiffrement base64, puis déplacez-vous vers la gauche et la droite, puis chaque XOR 3

import base64
diy_base="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz)!@#$%^&*(+/"
diy_ci="%BUEdVSHlmfWhpZn!oaWZ(aGBsZ@ZpZn!oaWZ(aGBsZ@ZpZn!oYGxnZm%w"
base="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
flag=""
def rol(x):
    return ((x<<4)&0xff)|((x>>4)&0xff)

for i in  range(len(diy_ci)):
    flag+=base[diy_base.index(diy_ci[i])]
flag+="=="
print(flag)
for i in  range(len(flag)):
    a=rol(flag[i])
    a^=3
    print(chr(a),end="")


161 articles originaux publiés · A aimé 14 · Visiteurs 7617

Je suppose que tu aimes

Origine blog.csdn.net/YenKoc/article/details/105213019
conseillé
Classement