某安全竞赛题一

前段时间一个比较大的比赛上遇到的两个题目,遂记录一下

运行改程序

该程序开启的端口为12345


发送畸形数据包之后程序崩溃,如下图可知,崩溃点发生在函数0x000000000040096b中

通过调试发现溢出发生在函数calc的memcpy函数中

溢出之后的堆栈,此时返回地址0x7fffffffc320被覆盖

通过查看即看发现溢出点的偏移为280

构造shellcode发包

内存中收到的shellcode

但是在该题中传入的shellcode会在传入溢出点之前被做加密处理,如下图所示,收取的数据在传入calc前,在函数EncodeBuffer中进行加密。

如下图所示即为处理过的shellcode,这样被传入的shellcode就不会被触发。

但是通过调试发现该处的加密处理是可逆的,即如果传入的是加密处理的shellcode,在服务端如果再进过加密处理,即会还原。

首先发送正常的shellcode

运行之后加密,可以从内存中dump出加密之后的shellcode。

此时再发送加密shellcode即会还原。

此时收到的shellcode即为加密shellcode。

双重加密之后还原的shellcode

  

溢出前的堆栈

溢出后此时返回地址0x7fffffff328被覆盖。

此时eip已可控。

。。。。。。。。

此题为简单的溢出,但是在溢出前对传入的数据进行了加密,因此需要对传入的shellcode进行编码处理,当是此处的加密函数可逆,因此可以不必去逆向整个加密函数,通过取巧传入加密之后的shellcode即可绕过该处加密。

时间: 2024-10-07 13:32:15

某安全竞赛题一的相关文章

一道竞赛题

/** * A.B.C.D.E.F.G.H.I.J 共10名学生有可能参加本次计算机竞赛,也可能不参加.因为某种原因,他们是否参赛受到下列条件的约束 * 1. 如果A参加,B也参加: * 2. 如果C不参加,D也不参加: * 3. A和C中只能有一个人参加: * 4. B和D中有且仅有一个人参加: * 5. D.E.F.G.H 中至少有2人参加: * 6. C和G或者都参加,或者都不参加: * 7. C.E.G.I中至多只能2人参加 * 8. 如果E参加,那么F和G也都参加. * 9. 如果F参

圆内接多边形面积最大值问题之探究: 从一道加拿大数学竞赛题谈起

1. 一道数学奥林匹克竞赛题: 给定半径为 $r$ 的圆上定点 $P$ 的切线 $l$, $R$ 是该圆上动点, $RQ\perp l$ 于 $Q$, 试确定面积最大的 $\triangle{PQR}$. (第13届加拿大数学奥林匹克竞赛) 解答: 本题难度不大, 只需考虑在 $\bigodot{O}$ 内找到与 $\triangle{PQR}$ 相关的三角形即可. 过 $R$ 作 $RS \parallel l$ 交 $\bigodot{O}$ 于 $S$, 作 $PM \perp RS$.

刚看到的一个java竞赛题

题目:赛软件 * 比赛  =  软件比拼   每个汉字代表0-9任意一个,编程打印所有解, 此题主要考察求 余运算 和 除运算 赛 = 赛软件/100, 软件= 赛软件%100, 比 = 比赛/10, 赛 = 比赛%10, 软件= 软件比赛/100 比 = (软件比赛%100)/10 写到这你应该有思路了吧, 代码如下 package test; public class Demo1 { //赛软件 * 比赛 = 软件比拼 //因为 件*赛 =x拼, 所以 赛!=0; 件!=0; 而且 软可以等

蓝桥杯竞赛题《地宫取宝》DP做法

问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿). 当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明. 请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝. 输入格式 输入一行3个整数,用空格分开:n

交错和 hihocoder竞赛题 1033

Kaggle竞赛题之——Sentiment Analysis on Movie Reviews

Classify the sentiment of sentences from the Rotten Tomatoes dataset 题目链接:https://www.kaggle.com/c/sentiment-analysis-on-movie-reviews 越来越喜欢iPython notebook了.以下所有工作都可以在一个页面上完成,FireFox支持比Chrome要好. 数据集分为train.tsv和test.tsv.字段以\t分隔,每一行有四个字段:PhraseId,Sent

一个西电的ACM竞赛题想到的 part1

题目如下: 输出结果如下: 上述题目看起来需要用到动态规划的知识. 采用动态规划设计算法的话, 算法的时间复杂度估计是很有效的. 但是由于本人对动态规划的理解还处于探索阶段, 所以没有用. 而是选择了一个时间复杂度为O(n^3), 空间复杂度为O(1)简单地算法.步骤如下: (1)排好序 (2)需要三个指针, 一个指向mid, 一个指向mid 的左边high, 一个指向mid 的右边low. high 被初始化为mid  + 1, low 被初始化为mid. (3) 固定mid 在一个fixed

某安全竞赛题二

第二题 程序运行 开启端口12543 ida打开程序,在函数initFunctions中会将之后要使用的系统函数以及字符串的地址保存在一个表中. 如下图 之后会调用函数parrot如下图,在该函数中会调用unk_603820处的函数,通过之前的initFunction函数可发现该处对应函数callFuntion. 在callfunction函数中,首先会调用mmap函数分配一段可执行内存,之后会将加密过的服务器通信函数拷贝到该断内存中,然后解密这段内存,最后运行,而该题的溢出点也发生在该被加密的

17蓝桥杯竞赛题“购物单”

小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的. 小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定. 现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物. 取款机只能提供100元面额的纸币.小明想尽可能少取些现金,够用就行了. 你的任务是计算出,小明最少需要取多少现金. 以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了