静态分析
在__stack_check_fail
中存在比较FLAG的逻辑。
按字符对FLAG进行比较,比较错误即输出“Nope.”。(学习了一下longjmp和setjmp函数)
FLAG是在eval
函数中进行输入的。(不用管它:))
动态调试
直接跳进__stack_check_fail
函数中,将比较逻辑设置为永远正确,输出进行比较的字符。
断点处,指令如下:
gdb脚本如下:
start
set $rip=0x555555554000+0x1290
b *0x5555555553e0
commands
set $rdx=$rsi
p/c $rsi
c
end
c
成功输出flag