-
-
[原创]第一届护网杯线下决赛awd之shell多解
-
发表于:
2018-10-25 21:03
19923
-
[原创]第一届护网杯线下决赛awd之shell多解
好久不打比赛,顺便来北京实习就参加了护网杯。排名虽然有所提高但还是被各种大表哥吊打。(和企业参赛简直痛苦)这里带来决赛中awd比赛pwn题shell的两种漏洞利用方式。
保护全开
程序模拟了一个受限shell命令行的功能。
一共有10个shell功能,根据漏洞利用方式可以分为两类。
第一类:ls,pwd,passwd,login,exit
其中passwd和login是假的利用方式。
就是密码通过打开random文件进行随机化。若账号密码正确则执行错误的system调用233333333333。加条知识点就是当连续open文件1024次上后,使文件描述符数组满了后,无法再次打开文件,即读取到的密码为空。这样就可以绕过密码实现登录(当然在这里登录没用)
第二类:recv,send,decode,encode。
实现通过堆的漏洞利用。
ls和pwd可以组合实现任意命令执行。大佬们看见这一行指令就开始疯狂刷分了。可怜我等菜鸟没经验编自动化脚本调格式都要半天。。。
payload为|cat<../flag即可直接获取flag这里不多解释这种方式
这种题在这个比赛肯定还有别的做法。。。(上面的做法太敷衍)于是开始考虑有无别的利用途径
send功能:若指针处有值,则free掉他.之后malloc一个任意大小的堆块填充至指针。并可进行堆块的填充。
recv功能:若指针处有值,则free掉他。之后malloc一个任意大小的堆块填充至指针。并将send功能指针指向的chunk内容通过strlen和memcpy拷贝到recv功能指针指向堆块。(明显存在堆溢出漏洞,且是大小不限的堆溢出漏洞)
encode功能:将send指针堆块内容加密。可通过此功能绕过strlen的0字节溢出限制。
decode功能:将recv指针堆块内容解密。只有此处存在一个put可以进行信息泄露。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2019-1-28 13:37
被admin编辑
,原因: