2022-02-07
[GXYCTF2019]luck_guy
64位IDA打开
F5打开主函数
// local variable allocation has failed, the output may be wrong!
int __cdecl main(int argc, const char **argv, const char **envp)
{int result; // eax@1__int64 v4; // rdx@1unsigned int v5; // [sp+14h] [bp-Ch]@1__int64 v6; // [sp+18h] [bp-8h]@1v6 = *MK_FP(__FS__, 40LL);welcome(*(_QWORD *)&argc, argv, envp);puts("_________________");puts("try to patch me and find flag");v5 = 0;puts("please input a lucky number");__isoc99_scanf("%d", &v5);patch_me(v5);puts("OK,see you again");result = 0;v4 = *MK_FP(__FS__, 40LL) ^ v6;return result;
}
读程序
继续,打开patch_me()
int __fastcall patch_me(int a1)
{int result; // eax@2if ( ((((unsigned int)((unsigned __int64)a1 >> 32) >> 31) + (_BYTE)a1) & 1)- ((unsigned int)((unsigned __int64)a1 >> 32) >> 31) == 1 )result = puts("just finished");elseresult = get_flag();return result;
}
继续,get_flag()
__int64 get_flag()
{unsigned int v0; // eax@1signed int i; // [sp+4h] [bp-3Ch]@1signed int j; // [sp+8h] [bp-38h]@7__int64 s; // [sp+10h] [bp-30h]@3char v5; // [sp+18h] [bp-28h]@6__int64 v6; // [sp+38h] [bp-8h]@1v6 = *MK_FP(__FS__, 40LL);v0 = time(0LL);srand(v0);for ( i = 0; i <= 4; ++i ){switch ( rand() % 200 ){case 1:puts("OK, it's flag:");memset(&s, 0, 0x28uLL);strcat((char *)&s, f1);strcat((char *)&s, &f2);printf("%s", &s);break;case 2:printf("Solar not like you");break;case 3:printf("Solar want a girlfriend");break;case 4:v5 = 0;s = 9180147350284624745LL;strcat(&f2, (const char *)&s);break;case 5:for ( j = 0; j <= 7; ++j ){if ( ((((unsigned int)((unsigned __int64)j >> 32) >> 31) + (_BYTE)j) & 1)- ((unsigned int)((unsigned __int64)j >> 32) >> 31) == 1 )*(&f2 + j) -= 2;else--*(&f2 + j);}break;default:puts("emmm,you can't find flag 23333");break;}}return *MK_FP(__FS__, 40LL) ^ v6;
}
读程序,发现flag是由f1和f2连起来的
f1已知是GXY{do_not_
f2初始值在case4中给了出来
然后case5对这个值进行了处理最后才连到flag上面
首先将0775463366014735261551LL转为十六进制数字,然后将case5中的循环逆过去
参考代码
flag = 'GXY{do_not_'
f2 = [0x7F, 0x66, 0x6F, 0x60, 0x67, 0x75, 0x63, 0x69][::-1]
s = ''
for i in range(8):if i % 2 == 1:s = chr(int(f2[i]) - 2)else:s = chr(int(f2[i]) - 1)flag += s
print(flag)
运行得到:GXY{do_not_hate_me}
2022-02-07相关推荐
- LeetCode-链表-面试题 02.07. 链表相交
描述 02.07. 链表相交 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c1 开始相交 ...
- 洛谷 深基 第1部分 语言入门 第4章 循环结构程序设计(2022.02.14)
P5718 [深基4.例2]找最小值 [深基4.例2]找最小值 - 洛谷 P5718 [深基4.例2]找最小值(python3实现)-2022.02.01 P5718 [深基4.例2]找最小值(pyt ...
- P5706 【深基2.例8】再分肥宅水--2022.02.13
[深基2.例8]再分肥宅水 - 洛谷 C++代码: /* P5706 [深基2.例8]再分肥宅水--2022.02.13 https://www.luogu.com.cn/problem/P5706 ...
- P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题(2022.02.02) --- python3实现
[NOIP2001 普及组] 最大公约数和最小公倍数问题 - 洛谷 """P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题(2022.02.02) h ...
- P1009 [NOIP1998 普及组] 阶乘之和-2022.02.01(python3实现)
[NOIP1998 普及组] 阶乘之和 - 洛谷 """P1009 [NOIP1998 普及组] 阶乘之和-2022.02.01(python3实现) https://w ...
- [2017.02.07] Lua入门学习记录
#!/home/auss/Projects/Qt/annotated/lua -- 这是第一次系统学习Lua语言 --[[ 参考资料: 1. [Lua简明教程](http://coolshell.cn ...
- 面试题02.07.链表相交
面试题02.07链表相交 public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode hea ...
- [LeetCode] 面试题 02.07. 链表相交
LeetCode 面试题 02.07.链表相交 思路 题目的本意其实就是求两个链表相交处结点的指针,并返回该结点指针 步骤: Step1.分别用两个指针curA.curB指向两个链表A.B的头结点 S ...
- 2023.02.07草图大师SU模型渲染- 效果图之加深颜色的色调
2023.02.07草图大师SU模型渲染- 效果图之加深颜色的色调
- OpenCV ERROE **: 02:07:27.741:GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the ...
OpenCV ERROE **: 02:07:27.741:GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same proce ...
最新文章
- Python3多线程threading介绍(转载)
- Python将DataFrame的某一列作为index
- 图片浏览器每次只能打开一张图片_导出阿里国际站图片银行中的图片到电脑
- mysql mysql_set_charset_SQL注入攻击之 mysql_set_charset [转]
- 道德沦丧的电商推广app开发②
- 【torch】pytorch label的one-hot转化
- 拿来即用的 Python 时间范围判断方法
- 快讯丨阿里云洛神云网络论文再次入选全球顶会SIGCOMM
- HDX RealTime 避免回音
- Java读写excel文件代码
- Web Api 接口文档制作
- 技术岗的职业规划_技术型员工职业生涯规划
- android 休眠任务不执行_Android休眠机制
- 搭建邮件群发服务器费用,自建邮件群发服务器优缺点分析
- 嵌入式Linux毕业论文题目,嵌入式毕业设计题目.doc
- windows下hadoop安装时出现error Couldn‘t find a package.json file in “D:\\hadoop\hadoop-2.7.7\\sbin“问题
- 【自建分布式数据库详细指南】(四)设计:CITUS分布式数据仓库OLAP/OLTP的架构选择及PG数据库优化方法策略
- 惠普电脑收购货源Autonomy此起彼伏前质疑声
- 鼎湖山html css实验,鼎湖山游记
- svg symbol css,Vue项目使用symbol的方式引入svg图标
热门文章
- html会在哪里显示,CSS如何显示 HTML元素
- 时间周期 java_周期和持续时间 / Period and Duration
- DL之LSTM:基于《wonderland爱丽丝梦游仙境记》小说数据集利用LSTM算法(层加深,基于keras)对单个character字符预测
- 成功解决NVIDIA安装程序无法继续 Ths OCH driver package is not conmtibIe with the currently uistalled version of
- ML之LiR2PolyR:使用线性回归LiR、二次多项式回归2PolyR模型在披萨数据集上拟合(train)、价格回归预测(test)
- 成功解决pillow模块内生成的非UTF-8格式(比如label中有汉字时)
- ML之SVM:基于Js代码利用SVM算法的实现根据Kaggle数据集预测泰坦尼克号生存人员
- CV之SR:超分辨率(Super resolution)的简介、使用方法、案例应用之详细攻略
- 数据科学-通过数据探索了解我们的特征
- Python常用扩展包