学习ret2csu
ret2csu在 ELF 可执行文件中,程序初始化时会自动调用 __libc_csu_init(),里面包含两段特别“肥”的 gadget,称为: 第一段 gadget:设置寄存器 第二段 gadget:执行函数调用 这两个 gadget 非常适合构造任意函数调用(带多个参数)。 gadget1(设置寄存器的 gadget)通常长这样(来自 _libc_csu_init): 123456780x40122a: ; gadget1 pop rbx pop rbp pop r12 pop r13 pop r14 pop r15 ret gadget2(执行 call 的 gadget)12345670x401210: ; gadget2 mov rdx, r13 ; 第3个参数 mov rsi, r14 ; 第2个参数 mov edi, r15d ; 第1个参数 call [r12 +...
理解 system($0)
不重要的前言废话:昨天做到了一个ret2text题,有一个值得稍微深入了解的知识点 先看看题 [GFCTF 2021]where_is_shell一、新知识点可以利用system($0)获得shell权限,$0在机器码中为 \x24\x30,而$0指代的就是”/bin/sh” 二、解题 看看字符串,shift+F12 有system(),无/bin/sh 注意到旁边函数表里有个函数名叫 tips(),有提示 看看tips(),发现有一个特殊的机器码 \x24\x30,即 $0,执行system($0),一样可以getshell 0x400540:E8 0x400541:24 0x400542::30 在 IDA Pro 中显示机器码(原始字节) 调整反汇编选项 点击菜单栏的 Options → General… 在 Disassembly 选项卡下,勾选 “Number of opcode bytes” 并设置要显示的字节数(如 10) 这样每条指令前都会固定显示机器码 有两种 payload,要么跳转到,call...
MoeCTF2024-PWN方向做题笔记
MoeCTF2024做题笔记 复现平台:MoeCTF 2024 - 西电 CTF 终端 题目:NotEnoughTime在正式开始 Pwn 之前,我需要先检测一下你的数学 (?) 能力... 我也是疯了,竟然真想跟它拼手速😅 就考验用python来写pwn基础脚本的能力,好吧,这的确是我缺少的 题解:本题考察 Pwntools 基本用法,虽然是简单的计算加减乘除,但是在输出算式时刻意添加延迟营造网络卡顿环境,并且算式存在多行情况,意在引导使用 recvuntil。注意在使用 Python eval 前需要去除多行算式中的 \n 以及末尾的 = 以符合 Python 语法。除法是整数除法,在 Python 语法中为 // 。 比赛期间注意到很多选手把除法看作浮点数运算,由此触发了许多奇怪的 bug(出题时并没有考虑到会有浮点数输入的情况)。于是临时新增了一个提示。 Exp: 12345678910111213141516171819202122from pwn import *io =...





