首页 > 其他分享 >未定义的标题

未定义的标题

时间:2024-06-02 16:44:08浏览次数:12  
标签:10 未定义 文件 记录 标题 data2 data lambda

逆向审逻辑

整理电脑翻出两个题目,一个re,一个pwn,复盘起来还得是需要仔细耐心。简单记录下。

justamat

23年蓝帽杯半决赛的一个re,题目不难,但是刚开始逆关键点没找那么准,另外矩阵计算方法也不熟。

elf程序,没有main函数,直奔start去。那么运行的函数应该是sub_404520这个了。

image-20240530185804936

进来看到welcome字符,那么做题来说,应该是到了程序开始的部分了。(下面strcpy和printf是手动重命名的

image-20240530190100432

此处提示good字符,那么上面的if应该是运算判断,跟进去看。

image-20240531134801802

红框处的代码是对于传入的矩阵进行了乘法运算,矩阵运算中*(_DOWRD *)matrix_ptr != (_DWORD)sum_product是对矩阵乘法计算出的每一位,和data2中相应位置的数据进行比较,不相等会跳出do-while循环,相等则继续循环下一位。因此只要输入的矩阵和data1计算的结果与data2全部相等即可。

image-20240531135134634

知道运算过程,再看data1和data2的数据类型。在运算过程中都强转成DWORD类型,长度4字节。根据v11、v12数组400字节的长度,所以data1、data2矩阵元素数量为100个。

image-20240531160839341

根据前面计算过程的分析,我们只需要知道data1、data2的数据,获得矩阵的逆就可以知道,应该要输入的数据是什么了。要导出data1、data2,首先创建结构体。

image-20240531192125899

对存储的数据应用创建的结构体,再shift+e导出初始化后的数组。

image-20240531192329070

直接给出exp,可以不用算逆,用z3爆破。

result =[
    116275,
    122772,
    134847,
    178752,
    125060,
    155857,
    129457,
    125466,
    126634,
    122802,
    115152,
    126706,
    136929,
    179712,
    129886,
    154996,
    126976,
    131798,
    131074,
    122366,
    114711,
    127116,
    141302,
    182202,
    131502,
    163775,
    134689,
    130908,
    130402,
    125256,
    114286,
    128215,
    142477,
    181075,
    129243,
    159261,
    130913,
    125455,
    127190,
    126376,
    109949,
    98840,
    117972,
    145846,
    109644,
    134524,
    121191,
    107764,
    117464,
    104110,
    99099,
    97861,
    118991,
    147167,
    98734,
    137056,
    119732,
    95702,
    97594,
    104783,
    71837,
    85199,
    87694,
    98027,
    78462,
    92741,
    76065,
    73712,
    79427,
    71465,
    86417,
    97559,
    94818,
    108643,
    94224,
    97040,
    85916,
    82920,
    89755,
    74796,
    63116,
    71978,
    86189,
    111008,
    85088,
    98987,
    81739,
    82342,
    88739,
    79305,
    120943,
    125178,
    136589,
    179628,
    134735,
    163558,
    136121,
    134790,
    135679,
    123375
]

data1 =[
    254,
    11,
    29,
    246,
    131,
    255,
    224,
    184,
    221,
    176,
    197,
    222,
    246,
    20,
    159,
    221,
    217,
    7,
    45,
    107,
    25,
    202,
    115,
    253,
    135,
    114,
    36,
    4,
    73,
    126,
    169,
    206,
    145,
    190,
    65,
    24,
    96,
    63,
    43,
    99,
    28,
    210,
    144,
    233,
    142,
    186,
    30,
    243,
    65,
    173,
    44,
    3,
    105,
    218,
    16,
    253,
    253,
    231,
    6,
    54,
    214,
    2,
    89,
    24,
    204,
    80,
    135,
    175,
    251,
    24,
    68,
    127,
    173,
    248,
    44,
    103,
    29,
    34,
    132,
    172,
    14,
    35,
    220,
    230,
    187,
    210,
    184,
    74,
    188,
    222,
    80,
    156,
    28,
    30,
    134,
    58,
    45,
    221,
    195,
    3]

from z3 import *
cin = [Int("x[%d]"%i) for i in range(100)]
s = Solver()
for j in range(10):
    for ofs in range(10):
        sum = 0
        for index in range(10):
            sum += (cin[j*10 + index] * data1[index*10 + ofs])
        s.add(sum == result[j*10 + ofs])
ans = s.check()
ans = s.model()
for m in cin:
    print(chr(ans[m].as_long()),end="")

image-20240531192603369

raw_socket

总体来看是检查对socket连接的熟悉程度,耐心分析,并不困难。

首先是main函数,程序运行后,监听默认ip地址 0.0.0.0,同时绑定在指定的端口上。对于远程成功连接上的client分配套接字文件描述符,再创建子进程运行session函数。

image-20240531204531776

跟进session函数。逻辑是,在for的一轮循环中,首先读取输入内容的字节长度;再读取输入的内容并用on_message函数进行处理。其中重点是readBytes和on_message两个函数。

image-20240531204831086

先看readBytes函数。recv函数是c中用于从网络中获取数据的,定义如下。

int WSAAPI recv(
  SOCKET s,//标识已连接套接字的描述符。
  char   *buf,//指向缓冲区的指针,以接收传入的数据。
  int    len,//buf参数指向的缓冲区的长度(以字节为单位)。
  int    flags//一组影响此功能行为的标志。 
);

逻辑是从client连接的文件描述符中读取4字节长度的数据。

image-20240531205345547

那么再看on_message函数。根据接收内容的第一个字节,如果是1,进入on_file_get分支;如果是4,进入on_get_file_chunk分支。

image-20240531205740209

第一个on_file_get分支,先将输入内容复制到套接字文件描述符+32处指针指向的位置,再调用normalize_path处理输入内容,处理路径后会给a1+4的位置添加标识。

image-20240531205855865

处理文件路径逻辑如下:

  1. 处理 ".." 目录:
    • 如果路径中出现 ".." 且后面紧跟着 "/" 或字符串结尾,则进行以下操作:
      • 如果 ".." 位于路径开头,则直接跳过 ".."。
      • 如果 ".." 不在路径开头,则从 ".." 向前遍历直到遇到 "/",然后删除 ".." 及其前面的 "/"。
  2. 处理 "." 目录:
    • 如果路径中出现 "." 且后面紧跟着 "/",则删除 "." 及其后面的 "/"。

image-20240531211103421

最后,将文件路径和写死的路径拼接起来,并返回给client文件描述符。

image-20240531211221256

回到前面,如果输入的内容第一个是4。先判断有无处理过文件路径,再用fropn打开路径文件,并读取文件,用send_message函数发送。

image-20240531211422594

send_message逻辑就简单,直接用send将读取文件内容发送到client套接字中。

image-20240531211534034

可以写gdb断点文件break.sh,用命令gdb -x break.sh --args raw_socket 9999运行。

start
b *$rebase(0x1ce9)
b *$rebase(0x1c24)
b *$rebase(0x1999)
b *$rebase(0x1c3e)
b *$rebase(0x188b)
b *$rebase(0x1d4b)
b *$rebase(0x1be8)

另起一个terminal,运行exp。

from pwn import *
context.arch = "amd64"
host = "127.0.0.1"
port = "9999"
p = remote(host,port)

s       = lambda data               :p.send(data)
sa      = lambda delim,data         :p.sendafter(delim, data)
sl      = lambda data               :p.sendline(data)
sla     = lambda delim,data         :p.sendlineafter(delim, data)
r       = lambda num=4096           :p.recv(num)
ru      = lambda delims, drop=True  :p.recvuntil(delims, drop)
itr     = lambda                    :p.interactive()
leak    = lambda name,addr          :log.success(name+"--->"+hex(addr))

def send_struct(data):
	size = len(data)
	s(p32(size))
	pause()
	s(data)

file_data = p8(1)+b"flag"
send_struct(file_data)
file_data2 = b"\x04" + b"dead" 
send_struct(file_data2)
itr()

image-20240531212205444

平航练习二

Case Information: 
Acquired using: ADI3
Case Number:  
Evidence Number:  
Unique Description: 
Examiner:  
Notes:  

--------------------------------------------------------------

Information for C:\镜像\磁盘镜像_20200901221212:

Physical Evidentiary Item (Source) Information:
[Device Info]
 Source Type: Physical
[Drive Geometry]
 Cylinders: 14,593
 Tracks per Cylinder: 255
 Sectors per Track: 63
 Bytes per Sector: 512
 Sector Count: 234,441,648
[Physical Drive Information]
 Drive Model: TO Exter nal USB 3.0 SCSI Disk Device
 Drive Serial Number: 201503310007F
 Drive Interface Type: SCSI
 Removable drive: False
 Source data size: 114473 MB
 Sector count:    234441648
[Computed Hashes]
 MD5 checksum:    39fffb31a8931525fdc6dea45d2bfdf3

Image Information:
 Acquisition started:   Tue Sep 01 22:12:12 2020
 Acquisition finished:  Tue Sep 01 22:28:32 2020
 Segment list:
  C:\镜像\磁盘镜像_20200901221212.E01

案件情况 在一起涉网诈骗案件中,办案机关扣押了嫌疑人的电脑以及调取了涉案相关的服务器数据,要求对其数据进行检验分析。
材料 磁盘镜像.E01(SHA1为SHA1: 361F067592F2E8AB79D858BF1C5B0982074EDC86),服务器.zip(SHA256为0142F97C7BFB4EC572C6D1FCBBFDF6E84F314E189867D81AAAC4D6EE2DD91860),共两份文件

1、请计算计算机的磁盘SHA256值(2分)

image-20240530183709311

2、记录计算机名与开机用户名(2分)

image-20240527192206242

3、记录计算机操作系统的具体Build版本号(1分)

image-20240527192250597

4、计算机中后缀名是jpg的缩略图数量为(2分)

image-20240527192511307

[☆]5、计算机系统桌面管理应用相关的记录事件ID为(2分)

可以记录下,从事件源来找id。

image-20240527205433866

6、记录当前计算机操作系统使用的文件系统格式(1分)

image-20240527193305007

7、当前计算机操作系统默认的照片查看器为(3分)

image-20240527192804751

8、记录计算机Foxmail软件的安装时间(1分)

image-20240527192838510

9、记录计算机于2020年7月29日最后一次运行navicat时间(2分)

29号没看到运行navicat记录

image-20240527193914948

10、嫌疑人曾用远程工具连接过服务器,列出所有连接过的IP和端口号(3分)

image-20240527193947797

回收站里还一个

image-20240527200041960

11、查找计算机中有关手机应用的痕迹,记录APP文件所在路径(1分)

image-20240527200146630

12、查找嫌疑人电脑上网站源码最可能的来源,并附上截图(3分)

image-20240527194052073

13、接上题,通过对源码分析,判断源码中有关数据库连接信息配置文件名为(2分)

image-20240527194639175

14、记录手机自动连接过的WIFI名称(3分)

image-20240527194708432

15、分析手机数据,请判断微博发送的验证码的短信是否已读,若已读,请写出读取时间(3分)

有时间戳,说明读过。

image-20240527195651655

18位时间戳转换方法:取前9位的数值,数值+978307200,得到一个常见的9位时间戳,使用工具转换成正常时间即可。

import time
timestamp = "617613269013913088"
timestamp = int(timestamp[:9],base = 10) + 978307200
timearray = time.localtime(timestamp)
normaltime = time.strftime("%Y-%m-%d %H:%M:%S", timearray)
print(normaltime)

image-20240530185220302

16、接上题,分析微博账号加入群(戏精学院~武汉基友)的时间(2分)

image-20240527201122880

17、列出手机数据当中,与百度相关的应用名及包名。(1分)

image-20240527201906912

18、统计计算机中,5、6月份工资表发放总额为多少元(3分)

image-20240527202034824

image-20240527202137164

image-20240527202145850

19、嫌疑人曾经登录过某分发网站,查找登录的用户名和密码(3分)

image-20240527202311930

20、提取计算机中名称为“1.jfif”图片中的隐藏文件,并计算其SHA256值(4分)

image-20240527202617291

21、记录计算机中谷歌浏览器下载过的文件总数量(1分)

image-20240527201652483

22、嫌疑人最可能使用哪两个工具登录访问暗网(3分)

image-20240527202644728

23、接上题,写出嫌疑人记录过暗网的相关登录网址及其账号与密码(3分)

image-20240527203557673

24、查找嫌疑人电脑上存有的分发账号,里面的账号共有多少条(2分)

image-20240527203738784

25、计算机中是否存在加密容器,其软件应用名为(3分)

image-20240527202851409

26、接上题,尝试运行容器,记录容器中分别包含的文件名(4分)

image-20240527205047610

常规卷

image-20240527205028169

隐藏卷

image-20240527204936404

标签:10,未定义,文件,记录,标题,data2,data,lambda
From: https://www.cnblogs.com/Tw0YY/p/18227275

相关文章

  • 【NOIP2018普及组复赛】题1:标题统计
    题1:标题统计题目描述凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符?注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字符数时,空格和换行符不计算在内。【输入格式】输入文件只有一行,一个字符串......
  • 提示词工程之“给论文起标题”
    提示词:-Role:学术研究专家和标题生成顾问-Background:用户需要一个能够根据论文摘要生成学术论文标题的系统。-Profile:你是一位经验丰富的学术编辑,擅长提炼关键信息并创作引人注目的学术论文标题。-Skills:学术写作、摘要分析、关键词提取、创造性思维。-Goals:设......
  • 【无标题】
    开源大模型与闭源大模型,你更看好哪一方?本人业余小白,浅浅的讲述一下我的观点。一:数据隐私关于数据隐私这一块,我更看好闭源大模型,因为闭源大模型并不像开源大模型一样容易扒取数据。二:商业应用这玩意我个人认为主要分两块一是隐私这一块那肯定是闭源跟好一点。二呢开源......
  • tomcat-设置jdk-设置标题-设置内存-配置项目路径
    tomcat目录下把jdk、项目包复制到根目录里 catalina.batsetTITLE=server[拜特接口平台服务端]#9000[%DATE%%TIME%]remsetJAVA_HOME=D:\Bytter_T2_test\jdk1.7.0_75setJAVA_HOME=..\jdk\jdk1.7.0_17setJRE_HOME=..\jdk\jre7setCATALINA_OPTS=-Xms512m-Xm......
  • 【无标题】
    操作系统实验报告4实验四 内存分配器的实现实习编号:操作系统实验_实验_4实习名称:内存分配器的实现巩固知识点了解并熟悉Linux操作系统的常用命令操作;了解基于Linux的功能开发。实习对应培养点学习使用Linux环境编写C程序;学习内存管理的开发相关知识。实验目的熟悉掌握......
  • 标题查询
    Sub标题查询()''标题查询宏'用来查询样式为标题n(1≤n≤9)的标题'Dimtitle_nDimfind_strAsStringfind_str=InputBox("请输入要查找的内容:","标题内容查询:输入查询内容")'做简单的合法性判断If(Len(find_str)=0)ThenMsgBox(&q......
  • 【无标题】
    CSS选择器以及权重问题选择器:就是给标签取名字一、选择器的类型1、标签(类型)选择器:(权重为1)标签选择器可以对所有的同类标签起作用,对应标签div/p/i/strong语法:标签{属性:属性值;}应用场景:需要统一或者清除标签内容的样式时;2、id选择器:(权重为100)语法:在标签内给用id给标......
  • 【无标题】基于[具体技术]的烟雾识别算法研究
    本文主要探讨了一种高效的烟雾识别算法,通过对[相关技术或特征]的分析和利用,实现了对烟雾的准确检测和识别。详细介绍了算法的原理、流程以及实验结果,并结合实际应用案例展示了其应用价值。一、引言(阐述烟雾识别的重要性及应用场景)二、相关工作(回顾以往烟雾识别算法的研究......
  • 【无标题】
    Web_Person简单的制作一个个人主页。在这里面我们需要制作一个表头,Tabs导航栏。这个·做的比较简单,所以比较复杂的东西。表头先自定义一个组件制作表头,这里面的使用的Text、Image和Button组件。并且我们需要在Texr添加点击事件:页面返回到上一级。@Componentstruct Head1......
  • fltk-rs 隐藏标题栏但显示任务栏图标
    usefltk::{prelude::*,*};usestd::os::raw::*;constGWL_EXSTYLE:i32=-20;constWS_EX_APPWINDOW:c_ulong=0x00040000;extern"system"{pubfnGetWindowLongA(wnd:*mutc_void,idx:c_int)->c_ulong;pubfnSetWindowLongA(wnd:*......