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: