tuma五题pwn

pwn1:

  • 先file查看文件
    在这里插入图片描述
  • 观察到是32位文件后拖到ida中,找到main函数,发现是gets函数导致的溢出。
    在这里插入图片描述
  • 关于gets函数,gets函数经常和puts函数配对使用,puts函数用于显示字符串并自动在字符串后面添加一个换行符,gets函数读取一行数据遇到换行符就返回,但是gets函数有一个缺陷:它不会检查地址能否装下输入行。gets函数在输入的字符串过长,会导致缓冲区溢出,多余的字符超过了指定目标,gets函数就会访问未被分配的内存空间。
  • 然后查看gets(&s)的偏移
    在这里插入图片描述
    在这里插入图片描述
    所以偏移为3b-10=2b
  • 我们可以发现print_flag函数就在下面,所以当我们填充2b个字符再继续输入字符,那么剩下的字符就会到v5这个空间里面,而当我们使v5这个空间的东西为0xDEA110C8时,我们就可以解出这个题目了flag将会输出。
  • 然后我们尝试着去虚拟机里面调试运行一下,看一看程序的运行情况。
    在这里插入图片描述
  • 我们在ida分析程序也可以了解到需要向文件发送3次数据,第三次则是需要先覆盖再输入0xDEA110C8
    现在我们可以写exp了~
    在这里插入图片描述
  • 然后再运行exp.py
    在这里插入图片描述

pwn2

  • 一样先查看文件,
    在这里插入图片描述
  • 然后根据她是32位的拉进ida,分析一下函数
    在这里插入图片描述
  • 见gets函数就比较敏感,可以看见gets函数和后面的函数取的都是s的地址,查看s的偏移。
    在这里插入图片描述
    在这里插入图片描述
    s的偏移为27+4=31
  • 然后查看一下select_func函数

    在这里插入图片描述
  • src取的是s的地址,它里面是31位,但是dest的偏移却是30(2A-C),函数里面的strncmp函数就是把0x1F(31)的数据从src复制到dest,所以此时就发生了溢出。发生溢出以后多余的字符会覆盖掉ret,导致最后弹回eip的是多出来的后面的内容,我们利用这个便可以去到我们想要访问的地址。
    在这里插入图片描述
  • 我们找到一个后门函数,print_flag,然后我们只要让函数跳到这里,我们便可以得到flag了。
    下面是exp
    在这里插入图片描述
    '\xd8’我之前一直不理解,其实就是上面的地址0x000006d8的简写,由于前面的000006都是一样的因此就省略了,如果不省略,反而容易出错些。

pwn3

  • 第一步虚拟机file
    在这里插入图片描述
  • checksec函数pwn3
    在这里插入图片描述
    当PIE开启就说明地址随机化
    拉进32位ida
  • 首先是函数
    在这里插入图片描述
    在这里插入图片描述
    asm()函数接收一个字符串作为参数,得到汇编码的机器代码。shellcraft()是shellcode的模块,包括一些生成shellcode的函数,asm(shellcraft.sh())可以用于作为执行/bin/sh的shellcode。
  • s的偏移为12a+4,当我们在s的空间里面填充大于12a+4覆盖掉ret,eip就会返回到我们想到的地址。
    在这里插入图片描述
    在这里插入图片描述
  • 那我们如何获得s的地址呢,虽然函数开启了地址随机化,但是在上面的函数print里面外面就可以知道s的地址了,因为它自己输出了函数的地址,利用recv得到函数输出的值即s的地址,将字符转化为16 进制。首先我们覆盖了s,然后我们让它返回到s+4的地方也就是12a+8,在上面的图上可以看见有一个end of stack variables,也就是返回到了那里,然后asm执行了/bin/sh,获得了shell。
  • exp如下
    在这里插入图片描述
  • 得到shell,见下。
    在这里插入图片描述

pwn4

  • 同理file,shecksec,见下。
    在这里插入图片描述
  • 开启nx,说明栈中数据没有执行权限,不能像以前一样直接搞到eip上,跳到我们要去的地方,一般情况需要利用到rop,(但是这次没有哦),拉进ida
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 关于这道题,反正我就知道gets不是个什么好东西,我写了一个很傻的exp,然后意外输出了shell一样的东西,但是我得不到flag,我以为我对了,好吧~错觉。。。。。
    然后我看了别的师兄的wp,还是不太懂,但是基本有一个模板在哪那里,我就查了好久。。。。。。终于了解到了。
  • 首先,补充一下os.system()函数,这是一个Python的基本函数,它的作用是将字符串转化为命令在服务器上执行,这个函数常常用于得到shell,遇见’Enter the arguments you would like to pass to ls:'以后,我们输入了s,而system刚好也就是取的s的内存里的数据。
  • 然后,我们需要了解到在Linux函数里面的命令&&和||,&&一般是连接两个命令的,而且必须是左边的执行成功了后面的才能执行后面的,而||就是必须要左边的执行不了才能执行后面的。
  • 好了,现在就来说说,怎么写这一题,我们需要执行命令&& cat flag.txt或者xx||cat flag.txt,前者就是在上面的命令(也就是程序本来自己执行的,当然可以顺利执行)所以位于&& 后面的cat flag.txt自然然就执行了,而后者,至于xx是什么,我试了什么cc啊或者dd啊,发现他都可以得到flag,拿到shell,然后我就想那既然如此,当 || 前面是返回的是1(即 || 前面顺利执行时,那是不是cat flag就执行不了呢?是的,我创了一个文件【1.txt】里面只有一个数字1,文件顺利执行,cat就执行不了!耶!说明思路对了。
  • 第一种方案:
    exp,如下,我甚至连偏移都没填充,只是告诉系统我要在什么时候给你数据,给你命令。
    在这里插入图片描述
    终端显示如下:
    在这里插入图片描述
  • 第二种方案,我将我要执行的&& cat flag.txt直接写进去,记得在后面加上’\n’,终端遇到它直接就执行了。
    exp如下:
    在这里插入图片描述
    终端显示:
    在这里插入图片描述

pwn5

同理:
在这里插入图片描述

  • 以前我一直没有注意过什么静态链接 什么的(statically linked),同样在这题里面我们可以看见开启了nx,栈上数据没有执行权限,值得注意的是上面所有的题是动态链接哦~
    关于静态链接的ROP,直接用ROPgadget --binary xx --ropchain 就可以生成rop链了。
    在这里插入图片描述
    在这里插入图片描述
  • exp如下:
    在这里插入图片描述
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于微信小程序的家政服务预约系统采用PHP语言和微信小程序技术,数据库采用Mysql,运行软件为微信开发者工具。本系统实现了管理员和客户、员工三个角色的功能。管理员的功能为客户管理、员工管理、家政服务管理、服务预约管理、员工风采管理、客户需求管理、接单管理等。客户的功能为查看家政服务进行预约和发布自己的需求以及管理预约信息和接单信息等。员工可以查看预约信息和进行接单。本系统实现了网上预约家政服务的流程化管理,可以帮助工作人员的管理工作和帮助客户查询家政服务的相关信息,改变了客户找家政服务的方式,提高了预约家政服务的效率。 本系统是针对网上预约家政服务开发的工作管理系统,包括到所有的工作内容。可以使网上预约家政服务的工作合理化和流程化。本系统包括手机端设计和电脑端设计,有界面和数据库。本系统的使用角色分为管理员和客户、员工三个身份。管理员可以管理系统里的所有信息。员工可以发布服务信息和查询客户的需求进行接单。客户可以发布需求和预约家政服务以及管理预约信息、接单信息。 本功能可以实现家政服务信息的查询和删除,管理员添加家政服务信息功能填写正确的信息就可以实现家政服务信息的添加,点击家政服务信息管理功能可以看到基于微信小程序的家政服务预约系统里所有家政服务的信息,在添加家政服务信息的界面里需要填写标题信息,当信息填写不正确就会造成家政服务信息添加失败。员工风采信息可以使客户更好的了解员工。员工风采信息管理的流程为,管理员点击员工风采信息管理功能,查看员工风采信息,点击员工风采信息添加功能,输入员工风采信息然后点击提交按钮就可以完成员工风采信息的添加。客户需求信息关系着客户的家政服务预约,管理员可以查询和修改客户需求信息,还可以查看客户需求的添加时间。接单信息属于本系统里的核心数据,管理员可以对接单的信息进行查询。本功能设计的目的可以使家政服务进行及时的安排。管理员可以查询员工信息,可以进行修改删除。 客户可以查看自己的预约和修改自己的资料并发布需求以及管理接单信息等。 在首页里可以看到管理员添加和管理的信息,客户可以在首页里进行家政服务的预约和公司介绍信息的了解。 员工可以查询客户需求进行接单以及管理家政服务信息和留言信息、收藏信息等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值