CTF-PWN-【system中的小要求】

system中的小要求

参考某位语雀大佬

把libc文件在IDA中显示
但不同libc文件可能不会存在这个问题

__int64 __fastcall system(__int64 a1)
{
  if ( a1 )
    return sub_44E20(a1);
  else
    return (unsigned int)sub_44E20((__int64)"exit 0") == 0;
}
对应汇编形式

.text:0000000000045390 ; __unwind {
.text:0000000000045390                 test    rdi, rdi     test是与操作,即参数非0即可执行参数对应命令
.text:0000000000045393                 jz      short loc_453A0
.text:0000000000045395                 jmp     sub_44E20
.text:0000000000045395 ; ---------------------------------------------------------------------------
.text:000000000004539A                 align 20h
.text:00000000000453A0
.text:00000000000453A0 loc_453A0:                              ; CODE XREF: system+3↑j
.text:00000000000453A0                 lea     rdi, aExit0     ; "exit 0"  如果参数为0会执行 exit 0命令
.text:00000000000453A7                 sub     rsp, 8
.text:00000000000453AB                 call    sub_44E20
.text:00000000000453B0                 test    eax, eax
.text:00000000000453B2                 setz    al
.text:00000000000453B5                 add     rsp, 8
.text:00000000000453B9                 movzx   eax, al
.text:00000000000453BC                 retn
.text:00000000000453BC ; } // starts at 45390
.text:00000000000453BC system          endp

打开其中的sub_44E20
.text:0000000000044E20 ; __unwind {
.text:0000000000044E20                 push    r12
.text:0000000000044E22                 push    rbp
.text:0000000000044E23                 xor     eax, eax
.text:0000000000044E25                 push    rbx
.text:0000000000044E26                 mov     ecx, 10h
.text:0000000000044E2B                 mov     rbx, rdi
.text:0000000000044E2E                 mov     esi, 1
.text:0000000000044E33                 sub     rsp, 170h
.text:0000000000044E3A                 lea     rbp, [rsp+188h+var_B8]
.text:0000000000044E42                 mov     [rsp+188h+var_B8], 1
.text:0000000000044E4E                 mov     [rsp+188h+var_30], 0
.text:0000000000044E59                 lea     rdx, [rbp+8]
.text:0000000000044E5D                 mov     rdi, rdx
.text:0000000000044E60                 rep stosq
.text:0000000000044E63                 cmp     cs:dword_3C9740, 0
.text:0000000000044E6A                 jz      short loc_44E78
.text:0000000000044E6C                 lock cmpxchg cs:dword_3C64A0, esi
.text:0000000000044E74                 jnz     short loc_44E81
.text:0000000000044E76                 jmp     short loc_44E9B
.text:0000000000044E78 ; ---------------------------------------------------------------------------
.text:0000000000044E78
.text:0000000000044E78 loc_44E78:                              ; CODE XREF: sub_44E20+4A↑j
.text:0000000000044E78                 cmpxchg cs:dword_3C64A0, esi
.text:0000000000044E7F                 jz      short loc_44E9B
.text:0000000000044E81
.text:0000000000044E81 loc_44E81:                              ; CODE XREF: sub_44E20+54↑j
.text:0000000000044E81                 lea     rdi, dword_3C64A0
.text:0000000000044E88                 sub     rsp, 80h
………………………………………………下面还有很多在这里就不显示了

大佬说这个函数的末尾有movaps指令为
movaps[rsp+198h+var_158],xmmo
(我们可以直接在IDA中的system区域搜索该指令是否存在)
这个指令要求 rsp+198h+var_158的值的十六进制形式为0x10的整数倍,否则无法getshell

方法:
1.改变payload长度,(局部变量入栈,栈长度改变)使得rsp值改变
2.利用ret使得rsp+1
3.使用其他gadget从而影响rsp
4.栈转移 当playload长度有限制,然后继续尝试该变rsp的方法
5.调用execve这个要三个参数要求较高

ctfd-pwn是一个非常受欢迎的CTF(Capture The Flag)比赛的一个赛题类型,它主要涉及二进制漏洞的利用和系统安全的挑战。 在ctfd-pwn赛题的收集过程,通常需要考虑以下几个方面: 1. 题目类型:ctfd-pwn赛题可以包含多种类型的漏洞,例如缓冲区溢出、格式化字符串漏洞、整数溢出等。在收集赛题时需要确保涵盖各种漏洞类型,增加题目的多样性和挑战性。 2. 难度级别:赛题的难度级别应该根据参赛者的水平来确定。可以设置多个难度级别的赛题,包括初级、级和高级,以便参赛者可以逐步提高自己的技能。 3. 原创性:收集ctfd-pwn赛题时应尽量保持赛题的原创性,避免过多的抄袭或重复的赛题。这有助于增加参赛者的学习价值,同时也能提高比赛的公平性。 4. 实用性:收集的赛题应该具有实际应用的意义,能够模拟真实的漏洞和攻击场景。这样可以帮助参赛者更好地理解和掌握系统安全的基本原理。 5. 文档和解答:为每个收集的赛题准备详细的文档和解答是很有必要的。这些文档包括赛题的描述、利用漏洞的步骤和参考资源等,可以帮助参赛者更好地理解赛题和解题思路。 6. 持续更新:CTF比赛的赛题应该定期进行更新和维护,以适应不断变化的网络安全环境。同时也要根据参赛者的反馈和需求,不断收集新的赛题,提供更好的比赛体验。 综上所述,ctfd-pwn赛题的收集需要考虑赛题类型、难度级别、原创性、实用性、文档和解答的准备,以及持续更新的需求。这样才能提供一个富有挑战性和教育性的CTF比赛平台。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看星猩的柴狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值