C++ executables usually require libstdc++ shared object file.
Having version mismatch btw libc and libstdc++ will usually cause an error on startup:
$ LD_PRELOAD=./libc.so.6 ./ld-2.35.so ./exe
./libc.so.6: version `GLIBC_2.36' not found (required by /lib/x86_64-linux-gnu/libstdc++.so.6)
While libc usually is provided by chal's author, the libstdc++ usually is not. Using local in-system libstdc++ (in /usr/lib...) often causes version mismatch, which produces the error above. The task is to find the corresponding libstdc++ for given libc and download it.
Right now pwninit does not searches for libstdc++ when dealing with c++ chals. Gonna add this feature
The example is roppenheimer chal from recent ductf-2023
C++ executables usually require
libstdc++shared object file.Having version mismatch btw
libcandlibstdc++will usually cause an error on startup:While
libcusually is provided by chal's author, thelibstdc++usually is not. Using local in-systemlibstdc++(in/usr/lib...) often causes version mismatch, which produces the error above. The task is to find the correspondinglibstdc++for givenlibcand download it.Right now pwninit does not searches for
libstdc++when dealing with c++ chals. Gonna add this feature-cppflag to mark chal as C++ and not C. Sopwninit -cppshould start C++ initialization-cppdownload the corresponding libstdc++ based on detectedld.soorlibc.so.6version.The example is roppenheimer chal from recent ductf-2023