root@ryota:~/TDUCTF# ./devnull Usage: ./devnull > /dev/null
なんか標準出力を/dev/nullに捨てろと言われる. 文字列比較処理を潰すか,flag出力関数を見るか等色々あると思うけど出力関数をltraceすれば良いかなという感じ.
root@ryota:~/TDUCTF# ltrace ./devnull > /dev/null __libc_start_main(0x4007ec, 1, 0x7fffffffe738, 0x4009b0, 0x4009a0 <unfinished ...> fileno(0x7ffff7dd77a0) = 1 __fxstat(1, 1, 0x7fffffffe5b0) = 0 __xstat(1, "/dev/null", 0x7fffffffe520) = 0 isatty(1) = 0 close(1) = 0 open("/dev/null", 1, 02704) = 1 dup2(1, 1) = 1 printf("TDU{%s}\n", "/dev/null_redirection") = 27 +++ exited (status 0) +++
rfn.py
はpopadがあったんで使う版と用意してくれたガジェット使う版の両方書いた.
writeでわざわざ['/bin/sh',NULL]の配列作ってるけどecxは単純にNULL突っ込んどいてもOKなのでもっと簡単に書ける.でもeax=11を積むためにwriteか何かで返り値は貰っておく必要がある.