先checksec一下
我的天,有栈保护,nx,咋办……
IDA进去,我们可以看见有个函数挺关键的,如下
我们可以看到stdin是可以无限输入的,但是只有接收输入时接收到'\n',才会继续执行(跳出while循环),找不出栈溢出的办法
然后看了大佬的操作之后发现:可以故意触发canary来攻击(SSP(Stack Smashing Protector ) leak)
先介绍一下好了,SSP外号叫金丝雀。应对“栈溢出”(也称缓存区溢出),需要一些对策。比如GCC的“Stack-Smashing Protector”机制(在数组后插入一些金丝雀(Canary, 因为大家在矿井作业时,会用金丝雀来预警,如果金丝雀死了,那证明有毒气),在函数执行完成返回之前会检查一下Canary,如果canary被改掉,则不再继续执行,中止程序,避免执行攻击者的代码。)
在I