METADATA文件中有一个example代码,修改绑定IP和端口,输入账号密码。(题干已给出)
然后根据题干要求修改短信内容和源地址、目的地址,依次发送两个短信,刷新8888端口http服务,可以看到flag文件。
import logging
掩码为255.255.0.0,网络地址取前16位,后16位置0,得到网络地址为:172.30.0.0,使用md5加密得到答案为:e945964770a0fd6f0dbbcd9622f2e63f。
从pcap包中提取ospf密码hash值,借助kali的john工具进行md5爆破后即可得到密码。
答案即为flag{yuio}
编写smpplib登录脚本,遍历密码字典中的密码,若登录异常则继续爆破,直到登录无异常,即得到正确的密码。
import logging
答案为flag{sikx}
RHG部分我们没有准备自动化工具,全靠手速。
由于本次rhg题目大多为静态编译且去符号,为了更方便直观进行程序分析,我们在赛前下载了对应版本的sig(libc6_2.23-0ubuntu3_i386.sig)放入IDA安装目录的sig/pc目录下,在使用IDA分析时可导入sig,可自动帮助识别libc函数。
和上午测试的pwn01一样,简单的栈溢出。
直接ropchain一把梭。使用ROPgadget得到rop链后构造exp。
ROPgadget --binary r2 --ropchain
from pwn import *
溢出点和pwn02一样,但是加了限制,payload中不能有BINSHbinsh中的任意字符。
通过read函数将/bin/sh写入bss段中,再使用系统调用执行execve即可获得shell。
from pwn import *
存在栈溢出点和后门函数,修改ret地址为shell地址即可。
from pwn import *
根据代码可知,v0为输入字符串的第16个字符后的字符串,转为整数后+5计算得到,即为输入任意16个字符后,输入85140即可获得shell。
from pwn import *
和pwn05逻辑差不多,输入12345即可拿到shell。
分析下来其实是一道嵌套了后门函数的迷宫题,从后门函数一步步回溯到入口函数,倒推回去即可得到正确的路径。
......
得到路径为:WSDWAAWDW
from pwn import *
格式化字符串漏洞,利用pwntools的工具将0x80ebf9c处的变量改为28即可得到shell。
from pwn import *
通过整数溢出绕过长度限制,构造长度为263的输入,263转为int8后由于溢出会变成7,strcpy即可造成v2缓冲区溢出。
from pwn import *
IDA分析程序,发现输入0时,会调用后门函数。
直接输入0即可获得shell。
babyshell
===================
漏洞:free指针后未置空、堆内写入大小未作限制。
修复:
1.将free后的指针清空。
2.对写入堆中的长度做限制。
分析程序发现为迷宫题,并且可以对迷宫中所在位置的值进行修改。
迷宫如下所示,2为墙,由于四周的墙不完全封闭,可以导致坐标溢出到迷宫之外的地址,实现任意地址覆盖。
[2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0]
修复方式即对坐标进行校验,如超出迷宫范围则退出。
在eh_frame段增加校验代码: