开启Canary保护

1:题目:[2021 鹤城杯]littleof (Canary泄露 +ret2libc -64)

checksec

ida分析:

程序本身无binsh与system,需要构造ROP链来泄露puts函数地址计算其基地址,利用基地址再计算system与binsh地址。但还开启了Canary保护。要先泄露Canary。构造payload1:

注意要send而不用sendline,因为sendline会发送一个\n会破坏Canary。

接下来构造ROP链泄露puts函数地址,程序并再次返回main函数再次执行一次,构造payload2:

计算基地址,再利用基地址计算system与binsh

程序再次返需再次泄露Canary,为payload4拿到shell做准备,构造payload3:

构造payload4拿到shell:

EXP: