攻防世界pwn第二题-hello pwn(两种方法)

    嘿嘿,我又回来了。看到上次自己发的博客,感觉图片的排版好差劲 

这次我将!搞好一点(hhh),话不多说,开始。

  至于前面的检查保护类型和看文件类型就不说了,有兴趣的小伙伴们可以看看pwn的第一题。有一说一,其实这道题已经有很大大佬发过write-up了,大佬们也写的很好,我在做题的过程中,也看过一些大佬们的write-up,但嘛,写一写,总是比没有好叭。 

  在检查完文件类型和保护机制后,我们很容易发现,就是一个很普通的64位的Linux件,且并没有什么保护类型。这个时候,我们先运行看看。

当输出过多的时候,就直接结束,然后把文件放IDA看看:

 

 

 可以很明显的看到,当dword_60106C等于1853186401时,进入sub_00686函数,并获得flag,再看看地址,很容易发现,unk_601068与dword_60106C相隔4个字节,而read函数可以读16个字节,很容易想到,我们可以通过覆盖的方式来改变dword_60106C的值,来进入函数获得flag,此时,就有两个方法。

第一种方法可以不用写exp,直接通过输入就好,我们可以通过先输入aaaa再输入1853186401即可进入函数,对嘛?不对,1853186401有十个字节,但是dword_60106C只有四个字节(dd是四个字节),所以我们需要将其转化为字母(转化为16进制是八个字节,有兴趣的小伙伴可以试试),也就是nuaa,也就是我们输入aaaanuaa,即可进入函数?我们再运行试试:

我们发现,输入后并没有什么反应??? 这个时候,就是小端序和大端序的问题,本题采用的是小端序。对于小端序和大端序,个人的理解是小端序低地址存低位,大端序就是低地址存高位。

因此本题的输入应该为,aaaaaaun,由此,可得本题flag:

 这是第一种方法。

第二种方法即可以写exp:

通过法一的分析可以我们就是输入将前面四个字节覆盖,后面四个字节的内容等于1853186401即可,则可得exp:

 运行后结果:

 

 由此可得flag。

  总的来说,其实两个方法是一个意思,但是如果是纯萌新(是我了没错!!!)直接看大佬们的解题,多多少少有点看不懂,因此就把两个方法都写在这,就我这个实力,也不求有啥,当然,能帮到大家是最好的,至于大佬进来,图个开心就好,嘿嘿。 

 这就是本次的全部内容呀,如果有什么写错的地方,还请大佬们见谅,

 参考文章:pwn从0开始-1-hello_pwn - Aninock - 博客园 (cnblogs.com)

                   [攻防世界 pwn]——hello_pwn_Y_peak的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值