摘要:
查保护 然后ida看代码逻辑 来到关键函数,这里存在栈溢出漏洞,但是这是数组循环一个字节读入,我们看一下i的地址 发现i的地址在rbp上面,所以我们构造payload肯定会把i的值给覆盖了,所以payload在构造时需要修改一下i的值,让我们的payload继续读入到正确位置,然后就是简单的ret2 阅读全文
摘要:
import requests import json from lxml import etree from concurrent.futures import ThreadPoolExecutor 导入多线程所需要的库 def mians(num): url=f"http://www.1o1o. 阅读全文
摘要:
还是先查一下程序保护情况 然后看一下代码逻辑 可以发现这里的代码还是挺多的,这里讲一下几个关键部分,首先是开头的addr = (__int64)mmap(0LL, 0x1000uLL, 7, 34, -1, 0LL);将addr这个地址开始的地方变成rwx权限,我们看一下这个地址是哪里 发现addr 阅读全文
摘要:
这道题没给附件,直接就是nc 这个题目的意思是,我们随机输入一个数,然后发给我们一段base64加密后的密文,真正num就在里面,我们现在写个pwntools脚本提取一下这段base64密文,解密一下,看看是什么东西 exp: io=remote("node4.anna.nssctf.cn",280 阅读全文
摘要:
import requests from lxml import etree url="https://pic.netbian.com/4kdongman/" domain="https://pic.netbian.com/" data=requests.get(url) #print(data.t 阅读全文
摘要:
看一下程序的保护状态 开了canary,接着看一下代码逻辑 可以发现,这里有格式化字符串漏洞,同时gets函数有栈溢出漏洞,现在只需要确定我们输入到buf的内容在格式化字符的第几个参数就行 可以确定buf在格式化字符串的第8个参数,又因为buf的偏移是0x20,所以canary在11个参数,因为ca 阅读全文
摘要:
检查一下保护状态 接着ida看代码逻辑 看func函数 第一次看真没发现有什么漏洞,题目给了backdoor,虽然strlen可以\x00绕过,但是strcpy函数也限制漏洞的实现。仔细看的话,会发现v3的类型是 unsigned __int8 v3; 说明v3是一个字节来表示的,可表示的范围只有0 阅读全文
摘要:
打开附件的流量包 可以发现有很多的tcp协议数据,追踪tcp协议数据看看 可以发现tcp数据流中有很多类似坐标的东西,先把这些数据另存为txt保存,如何用正则表达式提取这些数据,提取脚本如下: import re with open("data.txt", "r", encoding="utf-8" 阅读全文
摘要:
附件下载下来有三个东西。 点开exe,发现是鸡哥 判断应该是.net程序(.NET 是一个免费的跨平台开源开发人员平台,用于生成许多不同类型的应用程序。 凭借 .NET,可以使用多种语言、编辑器和库来生成 Web、移动应用、桌面应用、游戏和 IoT 应用),可以用dnspy打开,那个exe和json 阅读全文
摘要:
栈迁移的利用的过程不是很复杂,原理方面是比较麻烦:栈迁移原理介绍与应用 - Max1z - 博客园 (cnblogs.com) 这里简述一下栈迁移的利用过程: 我们先来看一下这道题的程序保护情况: 开了canary,接着看代码逻辑 这里的printf("Hello, %s\n", buf);可以发现 阅读全文