6811 分钟

# 1. 分析程序 64 位程序,开启了 NX 发现 case 1 中有后门函数,利用 strcat 函数进行拼接,那么我们就可以通过指令的连续执行来获取 flag 通过 ; 符合就可以分隔连续执行 linux 命令,那么我们只需要输入 ; cat flag 就能得到 flag # 2.exp (其实完全不需要,直接 nc 连接就可以): nfrom pwn import *from LibcSearcher import *context(os='linux', arch='amd64', log_level=&
2.9k3 分钟

# 1.ret2text 64 位程序,开启了 NX,明显的栈溢出 有后门字符串 点进去,然后按住 "ctrl +x" 转移到后门函数 要执行 execve ("/bin/sh",0,0) 直接利用 exp: nfrom pwn import *from LibcSearcher import *context(os='linux', arch='amd64', log_level='debug')p=process('./
9241 分钟

# 环境(一般情况下不会变动) Ubuntu22.10 glibc:2.36-0ubuntu4 # 1. 程序源代码 c#include<stdio.h>#include<string.h>void validate_passwd(char *passwd)&#123; char passwd_buf[11]; unsigned char passwd_len =strlen(passwd); if(passwd_len>=4&&passwd_len<&#
12k11 分钟

# 1.java GUI 编程(基于 swing 组件) # 1. 首先要创建顶层容器,通常使用 JFrame 首先要创建 JFrame 对象 头文件: aimport javax.swing.*;实例化 JFrame 类: aJFrame root =new JFrame(); // 默认没有标题 JFrame root =new JFrame("求平方根");// 标题为 “求平方根”此时已经实例化对象,但是框架窗口默认不可见,需要手动设置: aroot.setVisible(true); /&
1.4k1 分钟

# 1. 分析程序 32 位程序没有开启 NX 和 pie ida 查看一下 发现 vuln 函数可以进行溢出,但是没有发现后门函数,所以我们利用 ret2libc 呃。。。 利用 ret2libc 没有打通,换个方式利用 DynELF # 2. 利用 DynELF 构造 leak 函数 ndef leak(add): #add 为想泄露的函数地址 payload=b"a"*140+p32(write_plt)+p32(vuln)+p32(1)+p32(add)+p32(0x100) p.sendline(payload) fun_add
1.1k1 分钟

# 1. 查看程序信息 64 位程序,发现开启了 PIE 利用 ida 查看一下 发现转 c 语言失败,那就分析汇编 可以看到 buf 有 0x410 的大小,而输入只有 0x400,无法溢出 # 2. 分析汇编 这里解释汇编代码的含义 首先要了解 jg 命令的含义 jg:比较结果是">"则跳转,所以我们需要查看前面的 cmp的比较结果 read 函数的返回值是输入值的大小并且会保存到 eax 中 输入 shellcode 后会满足长度判断,使跳转到 loc_11D6 LEA 指令的作用是取 opera2 的地址,然后把这个地址赋给 opera1 lea
2.7k2 分钟

# 1. 查看程序 32 位程序,没有开启 NX,初步认为可以利用 shellcode ida 查看 看到有一个 orw_seccomp() , seccomp函数 是一个沙盒机制 进去查看(关于沙盒详情见文章 沙盒机制 ) 利用工具 seccomp-tools 查看具体过滤情况, 使用命令 seccomp-tools dump ./orw 看到我们可以使用 open/read/write 函数,可以写入执行这几个的函数的 shellcode 来读取 flag 通过 open 打开 flag 文件 利用 read 读取 flag 到某一
3.1k3 分钟

# 1.Linux 执行多个命令(shell 命令) l#逐条执行命令echo 1; echo 2; echo 3 #即使命令执行错误也不影响后面的命令继续执行#前面的成功执行后面才执行echo 1 && echoo 2 && echo 3 && echo 4 #2 出错,不会执行 echo3 ,echo4#前一条命令失败然后才继续执行后面的命令echo 1 || echo 2 || echo 3 || echo 4 #当第一个执行成功时,后面的就都不会执行;当第一个命令失败时,就开始执行 echo2,后面同理#混合使用分隔符echo 1 |