问题
为了配环境, 我采用16/18/20版本虚拟机配上pwndocker的方式实现
不过实际用pwndocker打题的时候, 发现一些坑点, 现在总结一下
这个pwndocker特指 https://github.com/skysider/pwndocker
(1) 没装LibcSearcher
libc版本问题一直是大坑, 这个docker又不自带, 所以使用者需要面对这个坑点
手动安装LibcSearcher, 并且需要切换到LibcSearcher文件夹下自行下载libc库, 而且下载时间大概在3-4小时, 非常影响游戏体验
(2) 自带的编译好的glibc偏移有出入
泄露libc时, 根据LibcSearcher的匹配结果, 发现用根目录下/glibc的libc进行patchelf之后, 本地是匹配不到对应的libc版本的, 所以一直打不通本地, 需要自行下载glibc-all-in-one
然后patchelf, 这样是可以匹配上的, 本地也可以顺利打通
解释
一直听大佬说把LibcSearcher扬了, 不过有的题目还是需要泄露libc的, 所以总不能一直手动查库叭
经过一段时间试错后, 总结得到正确的打开方式
(1) 如果不用别人配置的pwndocker
虚拟机直接装libcsearcher, 然后去python的这个libcsearcher目录下
rm -rf libc-database # if libc-database exists
git clone https://github.com/niklasb/libc-database.git
./get ubuntu
耐心等待半天(3-6h), 就更新完所有的ubuntu libc库了(当然依据个人网络而定, 我这里的垃圾网络就需要好几个小时
libc库大概总共600M的样子
(2) 如果用别人配置的pwndocker
同理在docker环境中执行上述操作
然后在共享目录安装glibc-all-in-one
git clone https://github.com/matrix1001/glibc-all-in-one.git
cd glibc-all-in-one
./update_list
cat list
cat old_list
./download xxx
./download_old xxx
以后换libc版本就只用glibc-all-in-one的libc库
最后一定, 一定, 一定记得docker commit
, 不然所有docker里的环境配置操作全部木大!
总结
暂时更新这么多, 以后如果还有坑就回过来总结
环境配置, yszd~ (