forth
forth 直接能跑system1。
S" sh" system
gurke
pickle 在 unpickle 的时候会执行对象的 __reduce__
方法2。用 eval 把 __main__.flag.flag
打进 stderr 就行了。
teufel
这题的 bin 不大,里面的 gadgets 很少,但是给了 libc. 思路就是先 leak 出保存在栈中的 rbp, 然后 offset 到 system。
这个 offset 要先在本机确定后三位(16 进制), 然后跑个脚本,用 0x1000 的步长去爆破服务器上的 offset. 我的办法是先找__stack_chk_fail
, 原因是这个函数不需要参数就能输出。
offset.py
exp.py
吐槽
~~readme 的 flag 居然是文件名… ~~不过LIBC_FATAL_STDERR_
这个环境变量确实是以前没见过的。
update 2016-01-24: 关于 readme 这道题,之前以为 flag 是文件名,做 ZCTF 的 guess 时3,回来看才发现原来是把argv[1]
改掉了,蛮有意思。
@rickyz 的 sandbox 解法4蛮有意思,居然想到争抢修改系统调用参数。直接改/proc/self/mem
来改变程序流也是第一次见。