CTF PWN
K1ose
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mrctf2020_shellcode_revenge
下载附件,checksec一下; 存在可读可写可执行的段; 看一下IDA pro的汇编; 和先前的题目类似,先read也给0x400bytes的字符串,然后compare一下eax和0; jg表示jump if greater,如果eax>0则跳转,否则eax为0,跳到另一个地址; 接下来看到很多判断语句,截取其中一部分进行分析; 这里比较al和`的大小,jle表示jump if less or equal,即小于等于; 如果al<=60h,则跳转到11DA,如果al<=7Ah,则跳原创 2021-04-24 11:13:41 · 933 阅读 · 1 评论 -
pwnable_orw
file orw; 32位程序; checksec; IDA pro分析; main函数下可直接执行shellcode; 但是存在沙箱,只能执行open、read、write等几个系统函数; seccomp-tools dump ./orw 显示允许使用的系统调用函数; 这里想的是: open('/flag') read(3,buf,0x66) #这里3是因为一般stdin、stdout、stderr占用了0,1,2; write(1,buf,0x66) #这里1为标准输出; buf可读可写; 这原创 2021-04-23 00:16:33 · 497 阅读 · 1 评论 -
ciscn_2019_s_9
下载附件,file一下,是32bit程序; checksec一下; 基本没保护措施; IDA里分析一波; main()跳到pwn(); 看看pwn()的内容; 看到fgets立马想到栈溢出; 又注意到有一个hint()函数; 其内容如下: 这里直接跳到了$esp,$esp是在堆栈上的; 既然有栈溢出,栈可执行,又有一个跳转到$esp的函数,思路就很清晰了; 我们先利用栈溢出,覆盖pwn()函数的返回地址为jmp esp的地址,然后我们再使得$esp指向shellcode所在的地址,完美! 但是因为原创 2021-04-22 01:13:28 · 970 阅读 · 0 评论 -
mrctf2020_shellcode
拿到附件后,先file一下; 看到是个64bit的程序,拖到ida64里; 再checksec一下附件,看看保护情况; 栈没有保护,有可读可写可执行的段; 可以dbg调试一下,看看具体情况; 可以看到有一个段可读可写可执行,栈也确实没有什么保护; 现在去IDA分析一下程序; 变量参数如下 可以看到前几行在设置标准输入输出和错误; 接着输出"Show me your magic!"; 然后read一个400bytes的数据; 接着是关键代码,将$eax赋值给[rbp+var_4],接着与0进行比较原创 2021-04-21 23:37:02 · 724 阅读 · 1 评论
分享