![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
攻防世界pwn题目
文章平均质量分 54
做一些攻防世界pwn题目的wp,因为现在能搜到的都是好几年前的了,有些函数工具库都更新了,题目也改了些内容,有些步骤报错让我们这种初学者很迷惑有时候
孤丞OVO
这个作者很懒,什么都没留下…
展开
-
攻防世界 level3
利用栈溢出漏洞通过main里的write函数打印出write函数在got表的地址,再与libc库中的write函数地址相减计算出elf中函数和libc中函数之间偏移量(无论地址怎么变化,elf中函数与在libc库中函数的偏移量总是相等的),再通过偏移量计算出内存中的system,/bin/sh的地址,再一次利用栈溢出漏洞即可。果然,buf只能装136,read可以读0x100,200多应该,超出范围,存在栈溢出漏洞。可以写脚本了,建议先打通本地后再远程,以后实战也是这样,注释写脚本里面了,有问题丢评论。原创 2024-07-14 09:25:52 · 195 阅读 · 0 评论 -
攻防世界 string
运行程序手动调试输入AAAA-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p来查找输入数据在格式化字符串中的参数位置为7(从0开始的的)国际惯例file,checksec一下,发现是64位的elf文件,不可修改got表,栈溢出保护开启,nx不可执行,没开地址随机化。第三个函数内容主要是让主程序给的两个数相等,它们原本不相等,但我们可以利用上面的格式化字符串漏洞修改使其中一个数等于另外一个。上面east后的内容是下面这个函数的。原创 2024-07-12 11:02:36 · 582 阅读 · 0 评论 -
攻防世界CGfsb
我只简单讲一下:当未使用占位符直接printf(s)进行输出时存在安全隐患,堆栈中没有占位符来和格式化字符串中的参数进行替换,我们可以通过%n格式(将已经输出的字符数写入参数)和$(程序遇到一个占位符,就按顺序向后寻找参数,但是我们可以使用数字+$的形式,直接指定参数相对于格式化字符串的偏移)来修改指定内存单元中字段的值。在我们格式化字符串漏洞利用中,常用%p来泄露地址,%x也都可以,只是显示的数据为十六进制,这里显示的是ascii码,A的ascill码为41,数出在第十个参数位置,即偏移量为10。原创 2024-07-05 21:46:07 · 248 阅读 · 0 评论 -
攻防世界 cgpwn2
看到这fgets读取我们的输入到name中,因为程序没留shell,我们可以直接传入/bin/sh这个系统的默认shell,又因为下面使用gets从s中读取,我们可以使用让s溢出返回我们在name里面传入的默认/bin/sh。下面这个是利用plt查找system在got表中的地址,以后程序开启地址随机化的话函数的地址是变化的,就需要这么来找。s的内存空间+0处start到s需0x26字符,r是偏移指针到start处需0x4字符。system函数的地址我们刚才已经找到了,可以直接写脚本了。原创 2024-07-12 10:31:01 · 1035 阅读 · 0 评论 -
攻防世界 hello_pwn
然后从指针&unk_601068指定的缓冲区里面读取最多16位数据(0x10uLL解读:0x代表十六进制,uLL=unsigned long long,无符号long long 型,10转为十进制即为16)直接执行一下,这里看别人的wp是可以通过输入构造字符串来getshell的,我这里就不这么做了,多练写脚本的能力。国际惯例checksec一下,64位小端序,未开启栈溢出保护和地址随机化,很明显这道题利用栈溢出了。刚学pwn的小白,大家互相学习,看看哪里说得不对打在评论区!写脚本,下面两个略微差别。原创 2024-06-30 15:13:02 · 331 阅读 · 0 评论 -
攻防世界 ics-05
将这串base64码解码后找到PHP重要内容为,preg_replace($pattern, $replacement, $subject)函数的作用是在$subject中搜索符合$pattern的部分,并用$replacement替换找到的部分。在preg_replace($pattern, $replacement, $subject)中将前面拼接一个/e,$replacement传值为要执行的命令即可。发现路径,是刚才那个文件夹下的,可以直接列出那个文件夹下的文件,比find快。原创 2024-07-10 11:04:27 · 232 阅读 · 0 评论 -
攻防世界 guess_num
双击gets里面的v7,发现和seed紧邻且偏移地址相差20(16进制),因此可以直接利用溢出修改seed的值获取指定随机数。写个c程序获取一下可能的随机值,拿到Linux上跑,因为Windows和Linux生成的随机值可能不同。接下的思路就是利用gets函数溢出修改随机数种子的值为0,因为上面c程序获取的seed=0的随机值。file一下发现是elf文件,chmod 700 给执行权限后运行一下发现有两个输入,大概就这样。国际惯例checksec,发现栈溢出保护,不可执行,地址随机化都开启了,难搞!原创 2024-07-09 08:30:01 · 320 阅读 · 0 评论