首页 > 其他分享 >buuoj-[Zer0pts2020]easy strcmp

buuoj-[Zer0pts2020]easy strcmp

时间:2022-12-17 19:13:11浏览次数:47  
标签:tem zer0pts 0x00 buuoj easy data strcmp data2

1.无壳

2.打开直奔main函数

啊,又是签到题吗?

交上去,不对。。。

然后开始一顿乱翻

这个看起来很可疑

查一下谁调用了这个函数,结果

又是一顿乱翻,从程序入口找到了这个:

一顿瞎点,找到:

off_201028 = sub_6EA,原来是间接调用,怪不得之前找不到

上面这个也留意一下,qword_201090就是strcmp函数

注意原strcmp这里:

双击,查看汇编代码,是跳转到off_201028,也就是 sub_6EA,所以这里的strcmp其实是 sub_6EA

查看sub_6EA,最后面有一个:

上面说了,qword_201090就是strcmp函数

也就是说,假的strcmp把flag放入了sub_6EA,然后一顿操作完成后,才调用了strcmp,也就是flag一顿操作完成后,变成了

那我们就看一看具体是什么操作就好了:

注意给的数据以小端序的形式存储,不过shift+e提取也不需要考虑这个问题,ida帮你做了

写个脚本加回去就得到flag了

data='zer0pts{********CENSORED********}'
data2=[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x09,
  0x4A, 0x49, 0x35, 0x43, 0x0A, 0x41, 0xF0, 0x19, 0xE6, 0x0B,
  0xF5, 0xF2, 0x0E, 0x0B, 0x2B, 0x28, 0x35, 0x4A, 0x06, 0x3A,
  0x0A, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
for i in range(len(data)):
    tem=ord(data[i])+data2[i]
    print(chr((tem)),end='')

得到:zer0pts{l3ts_m4kijĴńńSOUR_t0d4y}

乍一看是对的,但是不对。。

去看了一下大佬的博客

多者溢出。。

那就改一下脚本

data='zer0pts{********CENSORED********}'
data2=[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x09,
  0x4A, 0x49, 0x35, 0x43, 0x0A, 0x41, 0xF0, 0x19, 0xE6, 0x0B,
  0xF5, 0xF2, 0x0E, 0x0B, 0x2B, 0x28, 0x35, 0x4A, 0x06, 0x3A,
  0x0A, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
for i in range(len(data)):
    tem=(ord(data[i])+data2[i])&0xff
    print(chr((tem)),end='')

得到了:zer0pts{l3ts_m4k34DDSOUR_t0d4y}

还是不对,又去翻了好久博客,正确flag是:zer0pts{l3ts_m4k3_4_DDSOUR_t0d4y}

差了一点点:

是什么导致缺了1呢。。

想了好久,突然意识到 不会是上一字节溢出的给了下一位吧

然后改了一下脚本

data='zer0pts{********CENSORED********}'
data2=[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x09,
  0x4A, 0x49, 0x35, 0x43, 0x0A, 0x41, 0xF0, 0x19, 0xE6, 0x0B,
  0xF5, 0xF2, 0x0E, 0x0B, 0x2B, 0x28, 0x35, 0x4A, 0x06, 0x3A,
  0x0A, 0x4F, 0x00]
f=0

for i in range(len(data)):
    if f!=0:
        tem = ord(data[i]) + data2[i]+f
        f=0
    else:
        tem=ord(data[i])+data2[i]
    if tem>0xff:
        f=1
    tem&=0xff
    print(chr((tem)),end='')

得到

zer0pts{l3ts_m4k3_4_DETOUR_t0d4y}

标签:tem,zer0pts,0x00,buuoj,easy,data,strcmp,data2
From: https://www.cnblogs.com/Hznuxxw/p/16989358.html

相关文章

  • buuoj-[ACTF新生赛2020]Oruga
    1.无壳64bit2.找到main函数3.进入sub_78A,:_BOOL8__fastcallsub_78A(__int64a1){intv2;//[rsp+Ch][rbp-Ch]intv3;//[rsp+10h][rbp-8h]intv4;//......
  • buuoj-特殊的base64
    1.64bitwinexe无壳2.打开密密麻麻,但是题目叫特殊的BASE64,我选择直接shift+f12找密文和base表先试一下3.真给我解出来了importbase64origin='mTyqm7wjODkrNLcWl0e......
  • buuoj-[WUSTCTF2020]Cr0ssfun
    1.64bitnowinexe直接打开2.找到main函数当check(flag)这个函数==1的时候,才正确3.步入:耐心一点,一个一个扣出来就行了。。。a1=[0]*33a1[10]=112a1[13]=6......
  • EasyPytest测试平台开发日志之系统设计
    EasyPytest测试平台,帮你高效管理Pytest测试用例。EP平台的定位是Pytest测试用例管理平台,80%的自动化用例开发在PyCharm等专业的IDE中进行,20%的用例调度和结果查看就交给E......
  • Easyx绘制基本图形
    前言:本文旨在利用Easyx函数绘制一些基本图形,例如圆、扇形、矩形、椭圆、半角矩形等等,且含有函数具体使用方法。#include<easyx.h>#include<stdio.h>#definePI3.14intmain......
  • typora设置图床到博客园,简洁操作(EasyBlogImageForTypora)。
    简单记录一些这个方便的操作。之前有看网上好多设置github,gitee的图床,看一些设置操作的话,也是可以的,但是本篇利用的这个工具相比还是更加的简单。我们需要利用到一个工具,叫......
  • 【在线教育】EasyExcel入门
    文章目录​​1.EasyExcel入门​​​​1.1EasyExcel概述​​​​1.2EasyExcel特点​​​​1.3环境搭建​​​​1.3.1测试父项目​​​​1.3.2测试excel项目​​​​1......
  • Java:SpringBoot使用EasyExcel实现Excel文件的导出下载和上传导入功能
    SpringBoot使用EasyExcel实现Excel文件的导出下载和上传导入功能文件目录$tree-Itarget.├──README.md├──pom.xml└──src└──main├─......
  • EasyExcel导出样式设置(注解)
    EasyExcel导出样式设置(注解)参考资料链接1:EasyExcel--自定义表头(标题)样式策略参考资料链接2:EasyExcel常用注解参考资料链接3:EasyExcel注解大全@HeadRowHeight......
  • [oeasy]python0029_放入系统路径_PATH_chmod_程序路径_执行原理
    ​ 放入路径回忆上次内容上次总算可以把sleep.py直接执行了sleep.py文件头部要声明好打开方式#!/usr/bin/python3用的是python3解释sleep.py修改......