摘要: 题目描述: 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合 思路: 把字符串的元素依次放到栈里,遇到匹配的括号就抵消,否则照常放到栈里,最后检查栈里元素的个数,为0 阅读全文
posted @ 2021-02-08 19:07 田埂 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 检查一下保护机制: 只有pie没有开 ida看下程序逻辑: main函数: 第13行获取一个数字,第14行malloc(8*num)申请一个堆块,这个堆块将被用于保存其它堆块的堆址 然后进入while循环,首先是sub_4011c6函数: 会把数组off_404020里的字符指针指向的字符串依次打印 阅读全文
posted @ 2021-02-08 15:00 田埂 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 检查一下保护机制: 没有开启canary和pie,栈溢出少了很多麻烦 ida看下程序逻辑: gets函数导致栈溢出,可惜只有write函数作为输出, 本地可以写常用的rop,调用write函数泄露地址,但是远程的rdx好像为0,因此采用ret2csu的办法去泄露地址,拿到地址后接着写rop,执行sy 阅读全文
posted @ 2021-02-08 14:59 田埂 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 64位程序,函数的前六个参数存储在 rdi、rsi、rdx、rcx、r8、r9,其余的参数放在栈上 在ret2libc的时候,需要知道libc的基址,然后才能知道具体的库函数地址 那么首要的问题就是泄露出libc基址,如果有puts、printf函数还好说,倘若给一个write函数,那么泄露地址就成 阅读全文
posted @ 2021-02-07 22:27 田埂 阅读(718) 评论(0) 推荐(2) 编辑
摘要: 一、编译安装 我在这里下载了libc的源代码:wget http://ftp.gnu.org/gnu/glibc/glibc-2.31.tar.gz (可以下载不同的版本,比如,把glibc-2.31换为glibc-2.27即可) 然后我们解压它,拿到源代码: tar -zxvf glibc-2.3 阅读全文
posted @ 2021-01-23 01:36 田埂 阅读(4626) 评论(1) 推荐(1) 编辑
摘要: 1、备份默认的sources.list :sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2、编辑新的sources.list :sudo gedit /etc/apt/sources.list 清华源(ubuntu 16): # 默认 阅读全文
posted @ 2021-01-20 12:49 田埂 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 设置 ubuntu 自动休眠的时间段的方法如下: 点击桌面右上角的设置图标,选择 System Settings.. 选择 Brightness & Lock 设置具体的时间间隔: 阅读全文
posted @ 2021-01-20 11:18 田埂 阅读(3236) 评论(0) 推荐(0) 编辑
摘要: 安装完ubuntu后,觉得命令行字体有些小,这样去修改它: 右击空白区域,在弹出的菜单中选择,Profiles -> Profile Preferences 然后在弹出的窗口里,勾选Custom font,并修改对应的字体大小 阅读全文
posted @ 2021-01-20 00:44 田埂 阅读(1254) 评论(0) 推荐(0) 编辑
摘要: 下载某个版本的glibc,我是在这里下载的:https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/glibc/ 我把它解压到lib00文件夹里:dpkg -x libc6_2.31-0ubuntu9.1_amd64.deb lib00 利用p 阅读全文
posted @ 2021-01-18 00:23 田埂 阅读(3888) 评论(0) 推荐(0) 编辑
摘要: 1、sudo apt-get install qemu 后,运行arm文件pwn,报错 /lib/ld-linux-armhf.so.3: No such file or directory,如图: 2、下载 libc6-armhf-cross, ubuntu命令:sudo apt-get inst 阅读全文
posted @ 2020-06-29 12:24 田埂 阅读(8530) 评论(0) 推荐(1) 编辑