BUUCTF-picoctf_2018_leak_me

通过这道题,我学到一个操作:在运用put函数进行输出时,如put(v1),v1大小时0x10,如果v1已被写满,那么put函数无法在v1后不上\x00,函数不会被截断,会把栈上v1之后的内容继续输出

先检查

ida打开分析,发现不能反汇编,去他报错的函数先把这个函数f5,然后就可以了

分析发现,我们想要的密码放在s中,我们第二次的输入在s1中,想要执行函数拿到flag先要判断s和s1是否相等,如果相等拿到flag。

在栈上,我们第一次输入的v6和密码s是连着的。(v6的大小是0x100,v6结束后是s)

所以我们填满v6,put函数会帮我们输出密码s

直接发送给就得到了flag

posted @ 2022-05-10 20:12  -ro0t  阅读(84)  评论(0)    收藏  举报