02 2021 档案

摘要:现在有一组数,某一个数字a重复的次数超过了总数的一半,找出这个数字 对于这种情况,可以采用摩尔投票算法 思路就是:既然它出现的次数大于n/2 ,那我每次拿出两个不相等的数,直到拿完或者剩下的数字都一样, 最坏的情况就是每次拿出的数字都包含a,即使这样,最后数组里的数字仍然都是a 可以这样证明,比如有 阅读全文
posted @ 2021-02-20 01:11 田埂 阅读(72) 评论(0) 推荐(0) 编辑
摘要:题目描述: 给定一个只包括 '(',')','{','}','[',']' 的字符串 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 田埂 阅读(717) 评论(0) 推荐(2) 编辑