真理教教会

学习是美德,知识是财富,求道是目的

0%

由于arl开一个task扫C段,不会像扫域名一样给每个C段各分一个任务,反而把所有C段放一个任务里,这就导致内存占用过大,便宜服务器跑了会报错
所以我用脚本快速创建多个任务,一个任务一个C段
ps:最好的方法是改ARL,但感觉太麻烦了

脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import requests
import time

token=""
policy_id=""
ua=""
with open("C段文件","r") as file:
lines=file.readlines()

for i in range(len(lines)+12):
data={"policy_id":policy_id,"name":"默认名"+str(i),"task_tag":"task","target":lines[i]}
time.sleep(1) # 对你的服务器好一点
# 记得该IP
response=requests.post("https://IP:5003/api/task/policy/",json=data,headers={'token':token,"user-agent":ua},verify=False)

在挖src(挖了个p),我复盘了一下让学长看,学长认为我不够深入,要对看到的每个组件进行深入学习,看看有哪些洞留个印象,以后挖洞容易看出来,也会快很多

所以,这篇漏洞记录会写下针对某组件的信息搜集方式和利用方式
顺便挖个公益

Read more »

请看如下网页源码

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// $random = random();

echo md5($random);
$extension=$_POST['extension'];
$md5 = $_POST['md5'];

if (md5($random . $extension) !== $md5) {
echo "被打穿了呜呜";
}

?>

如何使以上的条件判断成立?
明白这个问题需要知道md5这个算法的结构

Merkle-Damgård结构

该结构,会将输入的数据进行填充并分割成压缩函数f能处理的长度,然后处理分割后的数据
hash的计算方式如下
wiki上截的
一开始的压缩函数以一个固定的向量和第一个分组数据为输入
产生的结果为下一次压缩函数调用需要的向量,与下一组数据同时作为输入进行计算

通过长度拓展劫持加密过程

一个hash的输入必须被填充为512bits的倍数+448bits
即 输入的长度(单位bit)和448关于512同模

再次回顾上面的代码
random的md5实际上是填充后的结果
如果将md5和extension作为输入,再算一次,就能得到random+padding+extension的md5值

1
2
3
$md5 = $_POST['md5'];

if (md5($random . $extension) !== $md5)

代码的这一部分
只要构造extension=padding+extension,就能控制靶机网页的md5计算过程,使其计算出计划中的新md5值

工具

https://github.com/iagox86/hash_extender

参考

https://luoingly.top/post/md5-length-extension-attack/

https://0xinfection.github.io/reversing/pages/part-22-asm-program-1-moving-immediate-data.html

虽然文章给了很多信息,但对某些核心的要点表述太多,还好我有文心一言

内存空间

linux系统的内存空间分为:USER SPACE 和 LINUX KERNEL SPACE

其中,汇编产生的程序,其运行时的内容都在USER SPACE,int 80h在这里出现

其工作流程是:

  1. 准备参数:
    1. %eax寄存器:用于存放系统调用号,即要执行的系统调用的唯一标识符。
    2. %ebx%ecx%edx等寄存器:用于按顺序存放系统调用所需的参数。对于需要超过三个参数的系统调用,可能还会使用%esi%edi%ebp寄存器,或者在内存中分配空间并通过寄存器传递指向该空间的指针。
  2. 保存上下文,例如USERSPACE里的下一条指令,FLAGS和重要的寄存器数据,它们都会推送到栈里
  3. 跳转到中断描述符表(IDT)(或者中断向量符表)的第0x80项:中断服务例程(ISR)(下面有解释👇)
  4. 根据寄存器的内容,执行特定的系统调用
  5. 执行完之后,从内核态转到用户态 这个过程叫IRET
  6. pop被保存的上下文,即来到int80h下的第一条指令

中断向量符表

Interrupt Descriptor Table

其前身(不确定)Interrupt Vector Table

在内存的最底部,段地址和偏移地址都为0的地方,存在名为Interrupt Vector Table的数据结构
其包含256个条目,每个条目有4bytes,每个条目都是一个内存地址称为中断向量

其中第0x80项:中断服务例程(ISR)会读取%eax寄存器中的系统调用号,并根据该号码查找并调用相应的系统调用处理函数

总结

int 80h是进行系统调用的方法

https://www.youtube.com/watch?v=A5uz6LWeLPM

磨听力时看到的视频,讲了如何学习英语语法并有效寻找纠正语法错误的方法

这分为一下几个步骤:

  1. 找出语法错误和弱项
  2. 确认问题属于:form or function (用法错误还是压根不认识不会用)
  3. 制作template 把句型提取出来 用n种方式补全 (I haven’t ··· yet today )

关于步骤一,平时没有积累,不知道弱项怎么办的?
网上找篇文章,读个2-3遍,用自己的英语写一遍,丢给AI

这是吾爱破解上的软件破解入门教程, https://www.52pojie.cn/thread-1358649-1-1.html
浅尝辄止了一下,记录一点小小的收获

软件破解是逆向工程的一个分支,是绕过软件创作者的使用限制的技术
要破解的有两个方面:

  1. 注册验证
  2. 反调试

注册验证

也就是向软件证明自己的身份,来告诉创作者:我是付过钱的

验证方法有:本地验证和网络验证
本地验证又有:

  1. 重启验证:注册不过期,例如使用注册码后,软件在注册表创建“已注册”的标志,每次软件打开都会先读取一次注册表
  2. 非重启验证:注册会过期,例如账号密码验证,每次重启软件都要重新输入账号密码

这套教程只讲解本地验证的破解方法

反调试

其手段大致四类:

  1. 通过环境查看手段,判断是否有调试器打开,例如看进程
  2. 对用户正在使用调试器的行为进行动态识别,是不是正在用调试器对软件进行调试和修改
  3. 对软件完整性进行检测,例如把加壳后的软件解壳,软件的体积和内容发生更改后,会被检测到
  4. 干扰处理:就是让你看不懂,加壳、加花、虚拟化代码

如何破解?

用反汇编器和调试器下断点,找关键代码,并进行适当的修改——打补丁
常用的工具例如ida和ollydbg
然后,要用吾爱破解专用ollydbg,因为有插件

怎么下断点?

  1. 关键字
    软件的内容分为指令和数据,在指令和数据区搜索“登录失败”之类的关键词就能锁定关键代码的位置
  2. api
    通常软件的弹窗、按钮等的功能都是对系统api的调用,而不是软件开发者花时间自己的写的
    搜索对应的api,下断点
    动态调试这个软件
    就能找打关键指令的位置

找到关键指令了,下一步?打补丁

阅读它,你需要能看懂汇编代码,你需要了解寄存器,你需要着重学习push、pop、call、ret、jmp和各种变体指令,如果你能懂call stack就更好了
PS: call stack 这个wanwan破解并没有教,如果你感兴趣,你可以穿越到几个月前访问begin.re学习这个知识,它下架了:(

假如这是个要本地登录的软件
你可能看指令的时候,看到“登录成功”和“登录失败”的弹窗指令,它们挨的很近
你只需要找到附近的je指令(也可能是jle或jge)改成jmp,跳过“登录失败”的弹窗指令,来到“登录成功”的指令

这会导致什么结果呢?你怎么登录都会显示“登录成功”,因为你无法“登录失败”

总之

破解的流程是:
找关键代码》分析〉跳过失败的指令》破解成功

我不太想在软件破解上更进一步,卖破解软件是要吃牢饭的

靶机地址:https://www.vulnhub.com/entry/gigachad-1,657/

要点

  1. 开启的ftp服务是能匿名登录的
  2. 根据ftp里那个的提示,了解了一个username,可以从web上获取一张藏有密码提示的图片
  3. 图片里没有用到隐写,应该去google上搜图
  4. find可以找到,靶机里有个s-nail-privsec的SUID文件,在exploitdb上找相关的exp就能提权

文章讲解:
https://nepcodex.com/2021/07/gigachad-walkthrough-vulnhub-writeup/
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2017-5899

结果



有趣的东西

the real gigachad

关于靶机根目录里留下的图片,可以获取一下信息:

1
2
3
4
5
6
演员的维基介绍 https://tr.wikipedia.org/wiki/Sefa_Zengin

2003-2004 - Kurtlar Vadisi - Erdal Kömürcü

土耳其惡狼谷 英文名:Valley of the Wolves 土耳其名:Kurtlar Vadisi
Erdal Kömürcü是该系列的一名角色

大多数是土耳其语,并且目前的翻译软件比较垃圾,又懒得看,就只能给出这点东西了

rabbit hole

dirsearch 扫描web的时候会冒出来一堆莫名其妙的东西,我也不知道这个叫什么,在 https://nepcodex.com/2021/07/gigachad-walkthrough-vulnhub-writeup/ 里被叫做兔子洞,但我直接搜会搜到别的东西

https://rabbithole.gg/
web3,学不会一点(−_−;)