[NewStarCTF 2023]srop
0x01 前言:Srop 初体验,总体上是要利用到pwntools集成的对于srop攻击的工具。 0x02 分析:先来 checksec: 0x03 Syscall你变了,你变得……上 ida 看看:是两个系统调用,但是参数非常奇怪,通常来说 rax 是装载系统调用号的,但是这两个调用里面 rax 都是 0,注意到在第一次 syscall 的时候,第二个参数在 rdx 上,给我的感觉就是传参的寄存器总体往后一了一位。先 gdb 看看怎么回事:步入了 syscall 函数里,一目了然了,主要动了手脚在这里 跟我们猜的一模一样,rdi 的值赋给 rax,rsi 的值赋给 rdi,也就是传参的寄存器总体后移了一位。接下来回到 main 函数,简单看看它做了什么:大概翻译了一下是这样两行函数,read 函数有溢出点,一般来说这样的题可能可以打 ret2csu,但是会在构造某个寄存器的值上会十分麻烦,所以这里着重介绍一下 srop,在程序中翻了翻可以找到: 0x04 调用号0xf是什么?看到这样一句,找了一下对应的系统调用: 打 srop...
GHCTF_PWN部分题解
想说的话:作为一个练习时长半学期的PWN小萌新, 正好来打打这个GHCTF。看了下主办方说是新生赛,实际上他们面向的对象是练习了一学期的新生,所以有些题看到的第一时间还是比较懵的,不过好在最后成功做出来了5 / 8题,还算可以吧。PWN学习之路还很长,慢慢坚持就好了。 1.Welcome come to the world of PWN0x01 前言:签到题,简单的ret2text和pie 0x02 分析:check一下:有pie,上ida看看:直奔主题,这里可以溢出,再看看有没有可以用的:发现了后门函数,而且跟main函数是连续的,所以只需要覆盖两个字节就能绕过pie 0x03 EXP:1234567891011121314151617181920212223242526272829303132333435363738394041from pwn import *from ctypes import *context(log_level = 'debug', arch = 'amd64', os =...
ez_pz_hackover_2016
0x01:前言vc哥通过这题给我讲解了很多pwn题的细节,通过写这题的wp简单的记录一下,题目本身一个strcmp绕过+ret2libc 0x02:题目分析check:没有NX?ida看看吧:跟进header():继续往下看:可以看到fgets()但是读取的长度不足以溢出,继续往下看,发现有个vuln函数,跟进:发现memcpy()且第三个参数很大,可以溢出,那么我们要构造的payload就是先绕过chall()函数里面的strcmp(),最后做个ret2libc: printf_got=elf.got['printf']printf_plt=elf.plt['printf']chall_addr=0x08048603payload=b'crashme\x00'+b'a'*(0x32+4-8)+p32(printf_plt)+p32(chall_addr)+p32(printf_got)debug()sla('>...
[VNCTF2 025]Fuko's starfish
0x01:前言主要还是加密算法识别,花指令识别,dll反调试(非必要) 0x02:分析比赛版当中的分析题目提供了一个exe以及一个dll,exe无壳,ida启动:暂时没看到flag的密文,考虑硬玩ing第一个是猜1到100的随机数,第二个游戏是贪吃蛇怎么操作噢在dll里面这里接收输入贪吃蛇游戏界面,wasd操作我先玩玩还有一个,先在ida里面翻一下好像是这个函数,有花:去一下flag密文应该是这一串, 就是那个while(里面的byte_1800A890) unsigned char ida_chars[] ={ 0x3D, 0x01, 0x1C, 0x19, 0x0B, 0xA0, 0x90, 0x81, 0x5F, 0x67, 0x27, 0x31, 0xA8, 0x9A, 0xA4, 0x74, 0x97, 0x36, 0x21, 0x67, 0xAB, 0x2E, 0xB4, 0xA0, 0x94, 0x18, 0xD3, 0x7D, 0x93, 0xE6, 0x46, 0xE7}; 看起来明文长度应该是16,...
[西湖论剑 2025]BitDance
0x01 前言:遇见的第一题没有附件的RE题,原来这种题目叫黑盒测试? 0x02 分析题目只给了一个靶机,连接上去之后提示输入:(没存图片,这里借队友的用一下)输入不同长度的字符串会提示Wrong length, 总之先把长度给爆破出来,这里可以使用python的pwn库,也就是pwn常用工具pwntools: //字符长度爆破脚本from pwn import *context(log_level = 'debug', arch = 'amd64', os = 'linux')xihu='139.155.126.78'stop=1text_len=''while(stop): p = remote(xihu,24847) text_len+='a' p.sendlineafter('Welcome to dance: ',text_len) if b'Wrong' in...
[NewStarCTF 2023]canary
0x01 前言:初见Canary保护,主要还是了解Canary的原理以及如何绕过 0x02 分析:check: 可以看到开了canary保护 原理是在一个函数的入口,先从fs/gs寄存器中取出一个四字节(eax)或者八字节的rax的值存在栈上(最低位都是\x00),当函数结束是会检查这个栈上的值是否和存在去的值一致,若一致则正常退出,如果是栈溢出或者其他原因导致canary的值发生变化,那么程序就会执行___stack_chk_fali函数,继而保护程序 我们先打开ida看看:可以看到有printf, 大致的思路就是通过字符串格式化漏洞, 把字符串的偏移给找出来, 然后通过下面的read做栈溢出, 正常溢出到后门函数, 但是在溢出的时候我们把canary的值给修改了, 所以在构造payload的时候需要注意payload的结构, 首先我们先执行下这个程序:可以看到字符串的偏移是6, 接下来用gdb看看canary在哪里, 我们先在main函数的call printf这里下一个断点:首先启动gdb, 输入 1gdb...
SUCTF_SU_BBRE
0x01 前言:小弟第一回参加SUCTF,只打了day1,这题算是re的签到吧,很可惜最后也没有做出来,就差了中间地址跳转这一步 0x02 分析:上来是一大段汇编,...