PolarCTF-Pwn(简单)刷题WP
1、sandbox
ida查看box函数,发现对输入的字符做了检查(sh、cat、flag)
1 | if ( strchr(buf, 's') || strchr(buf, 'h') || strstr(buf, "cat") || strstr(buf, "flag") || strchr(buf, '-') ) |
看这篇文章:pwn中常见的绕过(以后见多了会慢慢更的,咕咕咕) - Falling_Dusk - 博客园
对命令进行处理
首先想办法输入sh进去来提权:输入等价的$0
然后发现输什么都不会被拦截,获得flag
2、creeper
ida看game函数,发现只要字符数组长度为15就可以输出flag
注意这里换行符也算一个字符,因此输入14个字符换行即可
1 | __int64 game() |

3、简单溢出(https://www.cnblogs.com/ljnljn/p/18585191)
4、system
1 | int __fastcall main(int argc, const char **argv, const char **envp) |
输入即为指令,直接cat flag
5、emm
首先这是32位的!
1 | int yes() |
这里可以看到buf的位置以及大小(点击buf)
因此有exp:
1 | from pwn import * |

5、Easy_ShellCode
是个32位文件
然后用ida,主函数引入了两个函数
1 | int __cdecl main(int argc, const char **argv, const char **envp) |
init()函数没有问题
看Start()
1 | ssize_t Start() |
发现&str空间足够,没问题;而buf数组明显可能存在栈溢出
并且这里没有找到类似/bin/sh等指令,因此考虑写入shellcode覆盖str变量所在地址。
1 | from pwn import * |

6、小狗汪汪汪

1 | int dog() |
gets(s)为危险函数,存在栈溢出可能性
1 | int getshell() |
shift+F12发现/bin/sh
找到内存位置
exp
1 | from pwn import * |

- 标题: PolarCTF-Pwn(简单)刷题WP
- 作者: ljnljn
- 创建于 : 2024-12-05 14:21:00
- 更新于 : 2026-05-25 22:04:46
- 链接: https://ljnljn2005.github.io/2024/12/05/PolarCTF-Pwn(简单)刷题WP/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。