Points: 231
Category: Rev/Bin
We are presented with three files:
- babygraph: the compiled binary, running on the challenge server
> nix path-info --recursive --size --closure-size --human-readable -- ./result-bin | |
/nix/store/sdhmm56jv7r449hf7f57cl3pvnsy3cbg-xgcc-12.3.0-libgcc 139.1K 139.1K | |
/nix/store/4r64z7v5l40pg6r0hd169bcs85c8c42b-libunistring-1.1 1.8M 1.8M | |
/nix/store/w4djxksksd1p8m054k537plqnif5858k-libidn2-2.3.4 350.4K 2.1M | |
/nix/store/gqghjch4p1s69sv4mcjksb2kb65rwqjy-glibc-2.38-23 28.8M 31.1M | |
/nix/store/37gz8bz89lkppqdbby2wvmw19i8zwpiv-numactl-2.0.16 244.0K 31.3M | |
/nix/store/001lpbj4056r9h8fx9bwsas41rl8qy9a-lttng-ust-2.13.1 1.5M 32.8M | |
/nix/store/01550m4gj902l5q388zfb325fmv06r8w-ffmpeg-full-6.0-data 264.3K 264.3K | |
/nix/store/s5gzrzha72q79v92wqq61x9ir8xiwbxk-zlib-1.3 125.6K 31.2M | |
/nix/store/a46nf6mzygm6nv8dkis6mybm8363inhc-libpng-apng-1.6.40 249.3K 31.5M |
gef➤ file /home/evan/projects/mold/mold | |
Reading symbols from /home/evan/projects/mold/mold... | |
gef➤ bt | |
#0 0x0000000000b24bfa in do_dlsym_private () | |
#1 0x0000000000b26a48 in _dl_catch_exception () | |
#2 0x0000000000b26b13 in _dl_catch_error () | |
#3 0x0000000000b25339 in __libc_register_dl_open_hook () | |
#4 0x0000000000aab908 in __dlopen () | |
#5 0x000000000096db5f in tbb::detail::r1::global_symbols_link (library=<optimized out>, descriptors=<optimized out>, required=<optimized out>) at /mold/third-party/tbb/src/tbb/dynamic_link.cpp:390 | |
#6 tbb::detail::r1::dynamic_link (library=0x7ffe46c21f60 "", descriptors=0xb2b9e0 <tbb::detail::r1::MallocLinkTable>, required=0x4, handle=0x0, flags=0x7) at /mold/third-party/tbb/src/tbb/dynamic_link.cpp:464 |
[evan@arch mold-break]$ cat absolute_call.c | |
#include <stddef.h> | |
int main(void) { | |
size_t x = 0x12340000; | |
void (*f)() = (void (*)())x; | |
f(); | |
} | |
# here is current mold built with build-static.sh |
[evan@arch mold-break]$ /home/evan/projects/mold/mold -v | |
mold 1.0.3 (da48efe63ba2b073bff237daa5aa7d379764bba1; compatible with GNU ld) | |
[evan@arch mold-break]$ cat absolute_call.rs | |
pub fn main() { | |
unsafe { | |
let x: usize = 0x12340000; | |
let f: extern "C" fn() = std::mem::transmute(x); | |
f(); | |
} | |
} |
[evan@arch asdf]$ rustc --emit=obj --target=i686-unknown-linux-musl -C opt-level=3 -C link-arg=-fuse-ld=/usr/bin/mold -C link-arg=-Wl,--image-base=0x40000,-v -C linker=/usr/bin/clang -C link-arg=-v src/main.rs | |
[evan@arch asdf]$ file main.o | |
main.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped | |
[evan@arch asdf]$ objdump -dr main.o | |
main.o: file format elf32-i386 | |
Disassembly of section .text._ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17h7e3e23934c3cb896E: |
from archlinux/base | |
run pacman -Syu --noconfirm | |
run pacman -S --noconfirm git gcc make autoconf autoconf-archive automake libtool pkg-config glib2 glibmm libzip libusb libftdi check doxygen python-numpy python-setuptools swig jdk8-openjdk | |
run git clone git://sigrok.org/libsigrok | |
workdir ./libsigrok | |
run ./autogen.sh | |
run ./configure | |
run make |
I hereby claim:
To claim this, I am signing this object: