首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
开开心心写
获赞
11
粉丝
1
关注
1
看过 TA
20
西北工业大学
2024
Java
IP属地:未知
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑开开心心写吗?
发布(444)
评论
刷题
收藏
开开心心写
关注TA,不错过内容更新
关注
2020-05-03 23:12
已编辑
西北工业大学 Java
格式化字符串漏洞泄露StackCanary
2017陕西省的pwn_box这个题作为调试的程序,gdb作为工具 先来熟悉原理,推荐几个pdf学习懂原理吧: Format String Exploitation-Tutorial By Saif El-Sherei Exploiting Format String Vulnerabilities scut/team teso 看完这几个会对原理有深刻认识,然后如何操作呢? 戳我 然后就是理论到实践的部分,运行程序发现会对用户名进行检测(简单逆向得到用户名为admin2017),使用IDA对程序进行分析,发现在函数sub_8048845里有个很明显的缓冲区溢出的漏洞可以利...
0
点赞
评论
收藏
分享
2020-05-03 23:12
已编辑
西北工业大学 Java
缓冲区溢出漏洞
这个也是很常见的一个漏洞,原理是在没有栈保护的时候(或者有Canary的值然后被我们泄露出来之后),我们可以覆盖掉栈帧的返回地址,然后控制函数流程,从而达到提权的目的。 以2017陕西省的比赛赛题pwn_box为例进行调试 缓冲区溢出一般发生在字符串的读取,因为没有做边界上的检查,会导致读取的字符数量可能大于程序中申请的数量,导致栈溢出 截图中可以看到,Password的地方有个栈溢出,我们可以利用 我们要确定的地方有几个:Canary的值在哪,是什么;我们填充的字符在哪,需要多少个,要留出Canary的位置;多少个之后会改变控制流 先找到Canary的值: 所以,我们...
0
点赞
评论
收藏
分享
2020-05-03 23:11
西北工业大学 Java
2017陕西赛pwn_box_Writeup
题目链接:BIN的Magical_Box 格式化字符串泄露Canary和libc地址 缓冲区溢出提权 from pwn import * Local = False if Local: io = process('./pwn_box') libc = ELF('/lib/i386-linux-gnu/libc.so.6') elf = ELF('./pwn_box') else: io = remote('117.34.80.134',7777) libc = ELF('./libc.so.6') elf = ELF('./pw...
0
点赞
评论
收藏
分享
2020-05-03 23:11
已编辑
西北工业大学 Java
HAUTOJ 1262魔法宝石 优先队列
题目链接 比赛场上是暴力怼过去的,回来补题学了个优先队列的想法 因为宝石的合成情况可能有嵌套,比如1和2生成3,1和3生成2,2和3生成1,如果用dp去做的话,那么就会形成一个回路,就没办法当做树形dp搞了 所以我们要想到,如果出现了某个生成环,那么其环三个元素中,魔力值最小的那个一定不可被更新,所以这个环本质上是不影响我们最终最优值的 因此,我们只需要构造一个优先队列,按照所有宝石的魔力值从小到大排序,依次出队列依次对其他点进行更新即可 #include<bits/stdc++.h> using namespace std; const int maxn=...
0
点赞
评论
收藏
分享
2020-05-03 23:11
西北工业大学 Java
HAUTOJ 1264 某科学家的打麻将 dp
题目链接 首先,根据数字,大写字母,小写字母的情况,我们可以先按照6种情况来分类讨论。 那么,这个题跟51nod 1241看起来很像了:要求最少的整理次数,即求有多少个可以连续的:但是这个题的数字是可以重复的 所以,我们需要先对其进行整理,数字按照从小到大排序,字母也一样 然后求原串和构造出来的新串的匹配数就好 参考题解: writeup 代码如下: #include<bits/stdc++.h> using namespace std; const int maxn=20; int dp[maxn][maxn]; int digit,big,sma...
0
点赞
评论
收藏
分享
2020-05-03 23:10
已编辑
西北工业大学 Java
May-Day训练赛题解
这套题难度还是挺适合省赛训练的,脑洞+数学+模拟都有 A题:脑洞题,题意是说一根L米长的木头,我是一只蚂蚁,运动速度是vcm/s,这个木头会以m米/s的速度均匀变长,问我能不能从这头到那头 注意到均匀这个词,相当于这个木头是按比例拉伸的,只要我有速度,我总一天能够到,跟长度V和m没有关系,只需要判断v是不是0 B题:得去链接中看懂题意 看到所有的下划线,所有的答案是根据下划线的位置和其下面所有相邻的数值和右边所有相邻的数值而得来。如果初始矩阵中有数,那么是输出7个句号;否则,第一个值是一直往下走走到第一个下划线为止的所有数的和;第二个值是一直往右走。 所以,对于每个地方的值,...
0
点赞
评论
收藏
分享
2020-05-03 23:10
西北工业大学 Java
May_Day训练赛模拟题 HDOJ 3350 #define is unsafe
题意读起来非常复杂,其实就是要我们递归或者是用栈处理MAX表达式的计算,需要维护两个值,一个是现在计算好的总和值,另一个是现在的加号的运算次数 首先看到两个样例中: MAX(2+1,3) MAX(4,2+2) 这两个的运算次数为什么不一样呢? 因为3>3不成立,所以会执行后面的运算次数,后面那个3加号运算次数是0 因为4>4不成立,所以会执行后面的运算次数,后面那个2+2加号运算次数是1 所以我们将所有情况分成如下几类: 首先是a+b形状的,就比如样例中的这个数据: MAX(MAX(1+2,3),MAX(4+5+6,MAX(7+8,9)))+...
0
点赞
评论
收藏
分享
2020-05-03 23:09
已编辑
西北工业大学 Java
POJ 2769 Reduced ID Numbers 数学+暴力
河南省第十届省赛C题 题意是给你n个数,你需要找到一个数x,使得这n个数对x的余数都不一样 假设a和b对x同余,那么就是(a-b)%x=0 那么意味着,我们需要知道所有数的差值,我们的x不能是其中的约数 所有数的差值直接二维暴力处理,因为数据很小,可以开个一维数组判断某个值是否存在于差值中 我们要求最小的x,那么从1开始往上枚举,类似素数筛法,复杂度是mlog(m),m是枚举的最大可能值,在这里是1e6的级别,所以不会超时 判断条件是:x的所有倍数都不在差值里就是我们需要的值 //#include<bits/stdc++.h> #include<...
0
点赞
评论
收藏
分享
2020-05-03 23:09
西北工业大学 Java
POJ3613 Cow Relays 倍增floyd求最短路
第十届河南省赛I题~ 题意:从起点S,到终点E,跳上N次,花费的最小值是多少 其中全图有M条边,表示从A点到B点花费L值 首先注意到这个题点的标号不是常规的1到n,不是连续的,可以重新对点进行标号 图论题,最短路径问题首先想模板,因为点数少,所以floyd:n^3可以求出任意两点之间的最短路径 这个题的最大问题是:跳上N次(N最大是1e6) 挑战程序设计竞赛里面专门有一章讲述的是倍增的思想:跳上N次的最优值,我们不可能1次1次去跳 但是我们可以1次2次4次8次去跳啊~ 那么我们就把O(N)降到了O(log(N)) 所以我们首先把题目的数据输入记录成dist【0...
0
点赞
评论
收藏
分享
2020-05-03 23:09
西北工业大学 Java
2017广东红帽杯pwn1_writeup:简单ROP
先来正能量一波:作为一个一直没入门pwn的小菜鸟,这一段时间一直被学弟按在地上摩擦很不爽很不爽~~~~~~~~ ------------------------------------------------------------------------------------ 先给出几个学习链接: 一步一步ROP:x86 一步一步ROP:x64 论文: Return-Oriented-Programming(ROP FTW) By Saif El-Sherei 拿到一个pwn题时,第一反应是开了哪些保护:checksec检查一下 NX enabled是开启了栈不...
0
点赞
评论
收藏
分享
2020-05-03 23:08
西北工业大学 Java
TCP流式套接字与I/O复用Select模型代码
C++的socket编程:实现了Server和Client端的通信,主要功能: Server获取Client的system的时间,Server和Client互相收发文件 Server端代码: #include "stdafx.h" #undef UNICODE #define WIN32_LEAN_AND_MEAN #include<windows.h> #include<winsock2.h> #include<iostream> #include<ctime> #include<time.h&...
0
点赞
评论
收藏
分享
2020-05-03 23:08
已编辑
西北工业大学 Java
ODbgScript学习地址
看雪CTF2017的第二题,可以直接写ODbgScript脚本来爆破得到答案 Script 从看雪的里面找到了学习地址,贴过来方便慢慢学习 Part1:安装以及介绍 Part2:命令 Part3:脚本命令
0
点赞
评论
收藏
分享
2020-05-03 23:08
已编辑
西北工业大学 Java
2017WHCTF REVERSE babyRE
这个题其实比较简单,考察点是GDB调试与逆向分析 拖入OD分析,main无法F5,于是查看汇编代码以及汇编流程图 查看逻辑,很明显字符串的长度为0x0E(14个字符),然后调用了judge函数,判断字符串合法性 然后发现,IDA解析不了judge函数,肯定是有某些绕过静态反汇编的手段,于是开始GDB 直接在scanf的地方下断,开始进入judge的判断单步 注意这里0x400686的call rdx,就是judge函数的入口,需要单步进入(即s命令进去) 进来之后,发现了一段初始化 所以查看rbp之后,可以保存下来这些初始数据(不需要一个一个去打印) 运行...
0
点赞
评论
收藏
分享
2020-05-03 23:07
西北工业大学 Java
pwnable.kr - passcode
这个题考查的是GOT表覆写 先来说说做题的思路和方法,看到源代码 void login(){ int passcode1; int passcode2; printf("enter passcode1 : "); scanf("%d", passcode1); fflush(stdin); // ha! mommy told me that 32bit is vulnerable to bruteforcing :) printf("enter passcode2 : "); scanf("...
0
点赞
评论
收藏
分享
2020-05-03 23:07
已编辑
西北工业大学 Java
2017看雪秋季赛 第二题
先贴一发官方题解 这个题很有意思:以漏洞利用的方式来做reverse。 整体思路是这样的:查找字符串,看到了“有用”的,单步跟踪。main中有三个函数分别是:50,90和E0。50是处理输入的,90是check1,E0是check2。check函数是4个方程,得出的是无解,所以必须找其他地方。在IDA查找,发现了413131的一堆乱码,50里面有缓冲区溢出的漏洞,可以控制EIP跳转到413131。里面是一堆看不懂的花指令,去花的思想很简单:只要找到对我们有用的就好,无用的跳转直接F8下一句就好了。 下面来解释细节。 看到main的几个call,401050是输入,40109...
0
点赞
评论
收藏
分享
1
19
20
21
22
23
30
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客企业服务