SuperGate的博客

烫烫烫烫烫烫

CTF-PWN level5(Jarvis Oj)

和level3_x64一样的文件,但是限制不能使用system和execv函数拿shell,但是可以用mmap和mprotect完成本题。 我尝试用mprotect来解决,首先mprotect的结构如下: int mprotect(const void *start, size_t len,...

2019-05-16 12:51:27

阅读数 2

评论数 0

CTF-RE handcrafted-pyc(XCTF)

打开之后发现一堆字节码。把这堆字节码解压之后写入文件中: import zlib import base64 d=zlib.decompress(base64.b64decode('eJyNVktv00AQXm/eL0igiaFA01IO4cIVCUGFBBJwqRAckLhEIQmtRfPw...

2019-05-15 21:07:25

阅读数 2

评论数 0

Codeforces Round 551 D Serval and Rooted Tree

题目大意:给出一棵树,假设有k个叶子节点,则将这k个叶子节点赋值1~k。树上所有节点都有一个操作:求最大值(以"1"表示)或者最小值(以"0"表示),表示在该节点所有儿子节点中求最大/小值。规定树根为1,求最终根节点能得到的最大值。 分析:设一个节点u,其...

2019-04-15 23:01:19

阅读数 17

评论数 0

CTF-RE-PacMe(拆解KeyFile保护基础)

本题是《加密与解密》光盘中的一道题。比较经典且易于理解。首先我们点开文件尝试运行 点击check按钮,发现文件没有反应,于是使用ida进行分析 发现了一个CreateFileA函数,主要作用是打开一个文件,于是下一个断点点击F9进行调试 在程序在断点处停止后,点击check按钮 ...

2019-03-26 23:08:22

阅读数 52

评论数 0

POJ 1741 点分治

题目大意:给出一棵有n个节点的树和树中每条边的权值,再给出一个数k,求出树中所有长度小于等于k的路径条数。 点分治模板题,主要思路是: 1.找到树的重心root,将其当作根。 2.对于以root为根的树,一共有两种路径:一种路径过root,一种不过root,即全部在root的一个子树里面。不...

2019-03-13 19:48:05

阅读数 11

评论数 0

洛谷 P1514 引水入城

题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠。该国的行政区划十分特殊,刚好构成一个NN行\times M×M列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个海拔高度。 为了使居民们都尽可能饮用到清澈的湖水,现在要在某些城市建造水利设施。水利设...

2019-03-02 21:18:50

阅读数 47

评论数 0

CTF-RE-Evil exe(Jarvis OJ)

做此题需要的预备知识:ESP定律脱壳。如下网站介绍的比较详细且易懂,适合初学者了解: https://blog.csdn.net/qiurisuixiang/article/details/7649799 扔进ida发现没有函数,只有一堆乱码。于是猜测可能有壳。用OD打开分析一波: 根据...

2019-03-02 21:01:50

阅读数 39

评论数 0

CTF-PWN-level4(jarvis oj)

这道题只出现了read函数以及write函数。checksec也只发现了NX。 这次并没有给出libc的文件,所以我们可以考虑使用pwntools中的DynELF泄漏system地址,然后将'/bin/sh'写入.bss段中保存,在调用system函数的时候载入.bss保存的相应地址即可 ex...

2019-02-18 18:09:36

阅读数 21

评论数 0

CTF-RE-软件密码破解2(Jarvis Oj)

前面的输入部分很简单,到主函数后面会调用一个函数sub_ad1180. 在运行程序的时候,程序会陷入死循环,卡的地方就是这个函数内部,点进去查看.   看得出来这个函数大概就是为父进程创建一个子进程,然后将v22-v25通过writeprocessmemory函数写入内存. 由于我不知...

2019-02-18 14:03:58

阅读数 125

评论数 0

CTF-RE-shinyshot!(Hgame week2)

hd的师傅们出的题还是十分有意思的……这道题花了很多天时间才有了头绪,现在才搞出来。 我们把程序扔进ida反复调试后发现了一个奇怪的函数:sub_401460(v10),这个函数将我们输入的数字进行操作。我们点进去看: 很懵逼,没有见过的底层函数,和奇奇怪怪的变量名称。由于内部对tople...

2019-02-17 13:20:50

阅读数 139

评论数 0

CTF-PWN-level2(x64)(Jarvis OJ)

这道题和level2的32位版本的漏洞一样,不过32位程序函数的参数是压在栈中的,而64位程序的前6个参数是存在寄存器中的,第7个开始才压入栈中。 由于我们的目的是将system函数的参数改为/bin/sh,所以我们考虑用pop edi ret 语句将字符串赋值给edi。 同样的,程序中hin...

2019-02-15 18:44:09

阅读数 27

评论数 0

CTF-PWN-level3(Jarvis OJ)

发现这个系列的题构造都差不多……不过不同的是这道题中没有给出system的地址。 checksec一下发现cannary没开,于是分析read函数,发现可以栈溢出。 基本思路就是先利用第二个write函数打印出write函数的got表地址。然后再在给出的libc库中找到write函数的地址,计...

2019-02-15 14:06:14

阅读数 46

评论数 0

CTF-PWN-level1(Jarvis oj)

checksec发现没有开保护机制,所以我们可以考虑使用shellcode方法pwn掉。 查看vulnerable_function函数内部 发现程序直接给我们了buf的首地址。点进去看之后发现,buf只能存0x88个字符,但是我们可以读入0x100个字符。由于读入的时候字符串会暂时存在栈...

2019-02-14 14:39:40

阅读数 70

评论数 0

CTF-PWN-CSTW2(Hgame week2)

程序大概就是这么回事,read_int顾名思义,就是一个读入int的函数。虽然题目中要求我们输入的是一个正数,但是我们可以输入负数,可以将其当作一个突破点。 if(v5<=23)内部的read_n,第一个参数是输入的字符串存入的首地址,第二个参数是读入的长度。这个0x6...

2019-02-13 21:36:53

阅读数 50

评论数 0

CTF-PWN-ROPbaby(实验吧)

学rop的时候刷到的题,感觉很有启发于是就写下来。 本文很大程度上借鉴了如下文章: http://wzt.ac.cn/2018/04/02/ROP/ 进入正题。我们发现题目中给了我们libc的文件,在ropbaby程序中也可以直接查找libc基地址,因此我们就可以不用在主程序中寻找了。 首...

2019-02-07 20:23:22

阅读数 378

评论数 0

CTF-PWN-babysc(Hgame)

直接运行该程序,发现没有任何提示信息,随便输入一串字符之后,程序错误退出。 扔进ida查看: 程序用read函数读入buf,然后判断[rbp+var_4]和0x4f的大小关系。这里可以知道[rbp+var_4]应为循环变量,buf长度为80 然后对于buf[i] ,异或buf[i]^(i...

2019-02-04 14:13:33

阅读数 157

评论数 0

CTF-PWN-printf(实验吧|格式化字符漏洞)

首先运行文件,发现需要输入name,于是打开ida逆向出正确的name,来到了程序主界面。 首先我们先逐一判断函数的用途。put_file是让我们输入文本名称和内容,get_file是让我们输入文本名称,然后程序输出文本内容。show_dir是按照先来后出输出所有的文本名称,并且无缝衔接。 这...

2019-02-01 23:25:41

阅读数 249

评论数 0

CTF-RE-わかります(hgame2018)

Hgame week1里面应该说是最难的一个题。 主函数点进去之后会发现一个函数来判断输入的是不是flag。点进去内容如下: 发现ptr数组存的是输入字符串转化为ascii码之后每个字符的前4位,v7则是后4位,这里的位是二进制位。 然后分别将两个dword_6021xx数组找出来,点进生成...

2019-01-27 02:28:40

阅读数 117

评论数 0

基本的基于堆的栈溢出

该漏洞发掘的目的是向password文件添加一个具有root权限和已知密码项的额外项 在linux环境下实现。目标程序notetaker.c,源码如下: void fatal(char *message){ char error_message[100]; strcpy(er...

2019-01-05 16:32:51

阅读数 46

评论数 0

UVA1336 Fixing the great wall

题目大意:将长城看成一直线段,有n个需要修缮的点。对于第i个点用三个参数x,c,d表述。x表示位置,c表示立即修缮的费用,d表示单位时间增加的修缮费用。修缮时间忽略不计。机器人初始位置在x处,移动速度恒定为v,找到修缮所有点的最小费用 将所有点按照位置排序。由于修复的点一定是一段连续的区间,因此...

2018-12-30 18:20:49

阅读数 54

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭