- 博客(14)
- 收藏
- 关注
原创 国赛初赛pwn
那就是先买下摊位,再去改名,通过名字来溢出,实现系统调用。发现这里的钱有漏洞,可以直接输入负数,钱不减反增。调试前看了眼程序,尝试买摊位,发现钱不够。函数,推测这里有溢出。
2023-07-18 04:29:17
178
1
原创 期末考核复现
这行代码表示该函数将字符串 v7 解析为一个整数,并将解析结果存储到变量 v5 中。给我们带来利用的条件,这下v5和v6都是%d,%d的范围为32位。只要我们相加到超过这个范围,进1后,符号位就是1,则为负数。比如我们想要得到10000,已知一个数是1100,那么先假设加上0011,结果为1111,再加上1,即为10000。但不能直接输入负数来使它们相加为零,否则直接报错。就是V6这个随机数,转换为二进制后,再转换为补码,让x相加到33位,即成功绕过。开始设置爆破的种类,范围,步长。这题就是考爆破的运用。
2023-07-18 04:17:08
171
1
原创 pwn-canary绕过和PIE(未完待续)
看见了fork函数,那就通过爆破得出canary对于 Canary,但是同一个进程中的不同线程的 Canary 是相同的,并且通过 fork 函数创建的子进程的 Canary 也是相同的,因为 fork 函数会直接拷贝父进程的内存。我们可以利用这样的特点,彻底逐个字节将 Canary 爆破出来。 打开sub_128A函数 明显的溢出发现后门函数 开始计算溢出大小0x70-0x80=104①先逐字爆破出canary的值②直接溢出到返回地址,覆盖为后门函数的地址。但这道题开了PIE保护,而PIE是代码段,数据段
2023-05-30 17:49:53
1143
原创 考核PWN的wp(未完待续)
就是要输入一个负数,然后进行num=-num,再判断是否为负数,是的话成功绕过,再进入vuln函数。vuln函数给了system函数,但参数需要自己压入栈内。我们再去看看num=-num是怎么具体实现的,直接看汇编语言。发现是依靠neg指令来完成的。
2023-05-23 16:25:06
251
原创 jarvisoj_level
这题和前面最大的不同就是x64,就意味着参数调用方式的不同。不再是像32位一样,把参数压入栈中。而是先压入指定寄存器,第七个以后的再按逆序压入栈。
2023-05-09 19:23:53
183
原创 pwn之ret2libc1
提示:payload中的BBBB,本来是exit函数,但是系统的崩溃不妨碍我们拿到flag。所以简化版就是直接填入BBBB垃圾字节。用python3计算偏移量,可得108,再加上4字节达到返回地址。看到system函数,我们可以构建ROP链来替换参数。4.利用pwntools来构造payload。发现gets函数,为栈溢出点。栈溢出保护关,栈执行关闭。3.计算所需填充的垃圾数据。
2023-04-09 17:16:16
143
原创 ctfhubret2shellcode
要把shellcode写入返回地址之后,所以shellcode地址为16+8+8=32。还要再覆盖上父函数的栈底的指针信息,因为是64架构,所以有8字节。发现stack的权限有rwx,本题的攻破点就在栈上了。由图可得:buf距rbp 0x10,也就是16个字节。连接成功,即可得flag。
2023-04-02 18:23:08
518
原创 ctfhub 技能树pwn 栈溢出 ret2text
看到v4这个变量的缓冲区,我们要把数据溢出到覆盖返回地址,即0x70+8。选中该行,看到下方的地址(4007B8)看到gets危险函数,再点开其中的v4。再shift+f12 直接查看相关字符。可以看到无任何的栈保护。输入:wq 保存退出。
2023-03-29 22:07:44
897
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人