2021年全国网络空间安全技术大赛Writeup
bank
最直观就是格式化字符串漏洞,用来读取堆上的 flag :
进入分支需要经过一个 strcmp 的校验,这里的写法是:if ( !strcmp(s1, password) )
,需要返回值是 0 ,多了个取反符号,用截断绕不过去
问题是出在生成密码的地方,生成密码后用 fgets 读入,都是 gets 家族的函数,遇到 \n 就停止输入,当生成的密码首位是 \n ,那么密码全为 0x00 。一开始没发现,正常时用 read 读入就没有这个问题。
exp
1 | from pwn import * |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 SkYe231 Blog!