最新要闻
- 天气预报|未来三天局地阵雨“打酱油” 17日全市最高气温或达40℃
- 封神票房破20亿 即将回本赚钱 后两部特效经费有了!
- A股半年报盘点丨369家公司已披露 23家公司净利润超10亿
- 94股获券商买入评级,良信股份目标涨幅达59.01%
- 注意绕行!锡林浩特这些路段即将施工!
- 事关蔬菜稳产保供,农业农村部紧急通知→
- 矫正视力是什么意思5.0 矫正视力是什么意思
- 电瓶车也在搞无人驾驶 你说厂商们这是图啥?
- 汽车越来越贵 10万以下车型早已不是主流 30万以上份额暴涨
- 小爱同学新版即将公布:或将得到自研AI模型助力
- RX 6900 XT坏了:钻个孔 修好了!
- 事发突然!他跳进海水中!
- 安徽省怀远县市场监管局全力推进“个转企”落地见效
- 饮料、方便面、西瓜频繁丢失,民警查获5名涉盗窃人员
- 恒工精密等2只新股今日申购
- 猪胃的功效与作用
广告
手机
无惧汗水,尽情热爱!甄稀冰淇淋联手十足便利店助力杭州亚运征途
激战2新DLC即将上线,海外如何玩激战2国服?
- 无惧汗水,尽情热爱!甄稀冰淇淋联手十足便利店助力杭州亚运征途
- 激战2新DLC即将上线,海外如何玩激战2国服?
- 世界有多少国家/地区实施碳交易市场/碳税?
- ChatGPT自定义指令功能已向所有用户开放
- 揭示细菌对抗生素Albicidin产生耐药性的机制
- 舞蹈家王亚彬:不愿重复大家熟悉的西游故事
家电
NepCTF2023部分wp
【资料图】
Reverse
九龙拉棺
ida打开,找到主函数,可以看出函数是通过线程池调用的。在输入的地方下断点,运行会直接退出。猜测有反调试,搜索字符串debug,有Isdebugpresent字符串,交叉引用下断点后并没有成功断下。这里提供一个思路。就是在所有调用exit的函数下断点。看看会断在哪里。可以发现确实可以断下来。但是没有什么用。在输入下断运行还是退出。于是去看函数表,可以看到函数比较少。于是直接一个一个翻看。果然看到了有的函数调用了系统函数exitprocess。然后再下断,修改。可以跳过反调试这里贴一下反调试关键函数
点击查看代码
int encrypt(){ HANDLE CurrentThread; // esi CONTEXT Context; // [esp+4h] [ebp-2D0h] BYREF memset(&Context.Dr0, 0, 0x2C8u); Context.ContextFlags = 65599; CurrentThread = GetCurrentThread(); if ( !GetThreadContext(CurrentThread, &Context) || !Context.Dr7 ) return 0; Context.Dr7 = 0; SetThreadContext(CurrentThread, &Context); Context.ContextFlags = 65599; if ( GetThreadContext(CurrentThread, &Context) ) { if ( Context.Dr7 ) //这里下断点,改掉判断 ExitProcess(0xFFFFFF9D); } return 1;}
点击查看代码
#include #include void decrypt(uint32_t* v) {uint32_t v0 = v[0], v1 = v[1], sum = 3337565984, i; uint32_t delta = 0x61C88647; for (i = 0; i < 32; i++) { v1 -= ((v0 << 4) + 0x3) ^ (v0 + sum) ^ ((v0 >> 5) + 0x4); v0 -= ((v1 << 4) + 0x1) ^ (v1 + sum) ^ ((v1 >> 5) + 0x2);sum += delta;} v[0] = v0; v[1] = v1;}int main(){uint32_t v[] = { 2293224150, 1069434279, 665506233, 2360599838, 154439674, 3785309250, 4292676998, 3988353923, 314884287, 459783449, 4154791126, 418992724, 2869955760, 13345079, 44635922, 3314355614 };uint32_t tmp[2] = { 0 };for (int i = 0; i < 16; i+=2) {tmp[0] = v[i];tmp[1] = v[i + 1];decrypt(tmp);v[i] = tmp[0];v[i + 1] = tmp[1];}unsigned char *bytes = (unsigned char *)v;for (size_t i = 0; i < sizeof(v); i++) {printf("%c", bytes[i]);}printf("\n");return 0;} //NepCTF{c9cdnwdi3iu41m0pv3x7kllzu8pdq6mt9n2nwjdp6kat8ent4dhn5r158
点击查看代码
int __usercall encrypt2@(int a1@){ int v1; // ecx unsigned int i; // ecx unsigned int v3; // edi unsigned int v4; // esi int v5; // ebx unsigned int k; // edx unsigned int m; // ecx unsigned int j; // [esp+0h] [ebp-A0h] int v10; // [esp+4h] [ebp-9Ch] _DWORD v11[16]; // [esp+8h] [ebp-98h] int v12; // [esp+48h] [ebp-58h] int v13; // [esp+4Ch] [ebp-54h] int v14; // [esp+50h] [ebp-50h] int v15; // [esp+54h] [ebp-4Ch] int v16[15]; // [esp+58h] [ebp-48h] __int16 v17; // [esp+94h] [ebp-Ch] char v18; // [esp+96h] [ebp-Ah] int v19; // [esp+97h] [ebp-9h] char v20; // [esp+9Bh] [ebp-5h] int v21; // [esp+9Ch] [ebp-4h] v21 = a1; v1 = *(_DWORD *)(a1 + 504); v20 = HIBYTE(v1); v10 = v1 + a1 + 20; v16[0] = 0x1DC74989; v16[1] = 0xD979AF77; v16[2] = 0x888D136D; v16[3] = 0x8E26DB7F; v16[4] = 0xC10C3CC9; v16[5] = 0xC3845D40; v16[6] = 0xC6E04459; v16[7] = 0xA2EBDF07; v16[8] = 0xD484388D; v16[9] = 0x12F956A2; v16[10] = 0x5ED7EE59; v16[11] = 0x43137F85; v16[12] = 0xEF43F9F0; v16[13] = 0xB29683AA; v16[14] = 0x8E3640B4; v17 = 0x6177; v18 = 0xD3; v19 = 0xC2; for ( i = 0; i < 0x10; ++i ) v11[i] = *(_DWORD *)(v10 + 4 * i); v12 = 18; v13 = 52; v14 = 86; v15 = 120; for ( j = 0; j < 8; ++j ) { v3 = v11[2 * j]; v4 = v11[2 * j + 1]; v5 = 0; for ( k = 0; k < 0x20; ++k ) { v5 -= 1640531527; v3 += (v13 + (v4 >> 5)) ^ (v4 + v5) ^ (v12 + 16 * v4); v4 += (v15 + (v3 >> 5)) ^ (v5 + v3) ^ (v14 + 16 * v3); } v11[2 * j] = v3; v11[2 * j + 1] = v4; } for ( m = 0; m < 0x10; ++m ) { if ( v11[m] != v16[m] ) return 0; } return 1;}
Review
先upx脱壳,程序开了aslr,使用studype++关闭aslr。然后调试就不会飘红了。同样,与上题类似,程序开了线程池和反调试。跟进gets_s函数
点击查看代码
_BYTE *__cdecl common_gets(_BYTE *a1, int a2, char a3){ _BYTE *v3; // esi _BYTE *v5; // edi FILE *v6; // eax FILE *v7; // eax FILE *v8; // eax int v9; // eax int v10; // ecx FILE *v11; // eax _BYTE *v12; // edx FILE *v13; // eax FILE *v14; // eax _BYTE *v15; // [esp+18h] [ebp-24h] CPPEH_RECORD ms_exc; // [esp+24h] [ebp-18h] BYREF v3 = a1; if ( !a1 || !a2 ) { *_errno() = 22; _invalid_parameter_noinfo(); return 0; } v5 = a1; v6 = __acrt_iob_func(0); _lock_file(v6); ms_exc.registration.TryLevel = 0; v7 = __acrt_iob_func(0); if ( (unsigned __int8)__acrt_stdio_char_traits::validate_stream_is_ansi_if_required(v7) ) { v8 = __acrt_iob_func(0); v9 = _getc_nolock(v8); if ( v9 == -1 ) { v5 = 0; if ( a3 ) goto LABEL_23; } v10 = a2; if ( a2 == -1 ) { while ( v9 != 10 && v9 != -1 ) { *v3++ = v9; v11 = __acrt_iob_func(0); v9 = _getc_nolock(v11); } *v3 = 0; goto LABEL_23; } v12 = a1; v15 = a1; while ( v9 != 10 && v9 != -1 ) { if ( v10 ) { a2 = v10 - 1; *v12 = v9; v15 = v12 + 1; } v13 = __acrt_iob_func(0); v9 = _getc_nolock(v13); v10 = a2; v12 = v15; } if ( !v10 )//这里原本是v10,这里修改为!v10即可绕过反调试 { *v12 = 0; goto LABEL_23; } *a1 = 0; *_errno() = 34; _invalid_parameter_noinfo(); _local_unwind4(&__security_cookie, (int)&ms_exc.registration, 0xFFFFFFFE); return 0; } v5 = 0;LABEL_23: v14 = __acrt_iob_func(0); _unlock_file(v14); return v5;}
然后再绕过下面的Isdebugpresent反调试。来到关键部分。通过findcrypto插件识别到crc32,aes,tea的特征。然后交叉引用可以发现程序先进行魔改xtea加密。然后再根据加密后结果前一位与后一位是否一致来生成aes密钥,接着aes加密后与flag密文比较。aes密钥以为要爆破。没想到试了第一个就是。解题代码
点击查看代码
#include #include void decipher(uint32_t v[], uint32_t const key[4]) {unsigned int i;uint32_t delta = 0x61C88647, sum = 0x2e2ac13a,v6;int round = 10;do {v[11] -= ((v[0] ^ sum) + (v[10] ^ key[((sum >> 2) & 3) ^ 0xb & 3])) ^ (((16 * v[10]) ^ (v[0] >> 3)) + ((v[10] >> 5) ^ (4 * v[0])));for (i = 0xa; i >0; i--) {v[i] -= ((v[i + 1] ^ sum) + (v[i-1] ^ key[((sum >> 2) & 3) ^ i & 3])) ^ (((16 * v[i - 1]) ^ (v[i + 1] >> 3)) + ((v[i - 1] >> 5) ^ (4 * v[i + 1])));}v[0] -= ((v[1] ^ sum) + (v[11] ^ key[((sum >> 2) & 3) ^ 0 & 3])) ^ (((16 * v[11]) ^ (v[1] >> 3)) + ((v[11] >> 5) ^ (4 * v[1])));sum += delta;round -= 1;} while (round);}int main(){uint32_t v[] = { 2309579534, 3094518205, 2274467788, 4072683167, 418971191, 2065596768, 236488259, 3759075494, 2770389782, 2907179657, 384852496, 1019579761 };uint32_t const k[4] = { 0x19,0,0x6e,3 };unsigned int r = 10; decipher(v, k);unsigned char *bytes = (unsigned char *)v;for (size_t i = 0; i < sizeof(v); i++) {printf("%c", bytes[i]);}printf("\n");return 0;}
Misc
CheckIn
题目描述就有flag
与AI共舞的哈夫曼
直接问chatgpt拿到脚本,就能解出flag为Nepctf{huffman_zip_666}
问卷
填问卷就有flag
Pwn
HRP-CHAT-1 HRP-CHAT-3
抽到h3,用大招打败t佬得flag先创一个用户名,然后用该用户名进行sql注入1"--。给了源码中有exp没删
关键词:
NepCTF2023部分wp
如何用随机方法求解组合优化问题(三)
Python中threading模块 lock、Rlock的使用
天气预报|未来三天局地阵雨“打酱油” 17日全市最高气温或达40℃
新能源汽车崩了!降价风暴又至,“卷王”特斯拉也跟上,新一轮“厮杀”已开启?
史克兢带队绥德督导检查夏季治安巡查宣防建集中统一行动
平顶山卫东区:招商引资按下“快进键”
2023年大连灵活就业人员社保缴费多少钱一个月
格科微:副总裁暨核心技术人员离职
阿里巴巴北京总部园区项目预计10月份完工
中汽协:7月新能源汽车产销分别完成80.5万辆和78万辆 同比分别增长30.6%和31.6%
西宁:多子女家庭租房提取住房公积金限额将提高
艺术欣赏|陈可之油画《一天之计在于晨》
无惧汗水,尽情热爱!甄稀冰淇淋联手十足便利店助力杭州亚运征途
组织管理如何创造价值
为什么车牌那么容易被水冲走(为啥车牌容易被水冲掉?)
激战2新DLC即将上线,海外如何玩激战2国服?
贵州省黔东南苗族侗族自治州雷山县2023-08-14 14:14发布暴雨黄色预警
心慌烦躁是怎么回事(心慌烦躁不安怎么回事)
吉林省人民政府防汛抗旱指挥部终止省防汛防台风二级应急响应
江西“百城联动”汽车消费季活动在抚州启动
马英九慰安妇铜像前痛批蔡英文:对慰安妇无情无义 让人愤怒
中国电信客服就“双倍扣费”致歉:系统升级致河北部分用户余额显示异常,正紧急处理
世界有多少国家/地区实施碳交易市场/碳税?
索菲亚:8月11日融资买入444.44万元,融资融券余额1.63亿元
姚妙:“下半年,我的小目标是UTMB参赛组别前三,大目标是马拉松跑进2:30”
辉隆股份:8月11日融券净卖出8.19万股,连续3日累计净卖出15.97万股
凯美特气:8月11日融资买入504.46万元,融资融券余额2.33亿元
Nothing Phone2首次公开销售查看价格规格和优惠
国网信通(600131)8月14日主力资金净卖出879.65万元
永鼎股份(600105)8月14日主力资金净卖出172.30万元
【财经分析】预制菜产业“乘风破浪” 亟待建立标准体系提升品牌
优化环境、创新产品、打造平台——各地加快推动形成绿色生活方式观察
广西举行“全民健身日”系列活动
“挡脸”身份证保护套火了,违法不?民警这样说
手球——第一届学青会女子公开组比赛开赛
红豆糯米糕怎么做 红豆糯米糕怎么做图文
剑与远征演武试炼活动什么时候开始(剑与远征演武场)
西安山洪泥石流灾害已发现21名遇难者,仍有6人失联
一道长通新能源·2023威宁草海高原半程马拉松鸣枪开跑
巴萨0-0争议不断!阿劳霍双手接球没黄牌,补时造点球主裁不判
奥特曼:雷格罗斯有2个bug,不听命于奥特之王,有望成为新四奥
【新时代的贵州人】王海军:带领团队解决航天材料的瓶颈问题
鸿蒙4里的大模型,能否撑起华为的野心?
金融数据短期波动 货币政策有望加力
DevOps再进化 VMware借力平台工程加速应用现代化
ChatGPT自定义指令功能已向所有用户开放
霞客行之江山多娇:大理古城
植物营养概念股名单(2023/8/14)
郭明錤:无需担心OpenAI破产 AI/AIGC已是明确趋势
突然双倍扣费?中国电信客服致歉:系统升级致部分用户余额异常正处理 具体是什么情况?
封神票房破20亿 即将回本赚钱 后两部特效经费有了!
泰康福寿百岁2023养老年金保险怎么样?是真的吗?
深入学习贯彻习近平法治思想|河南鹤壁淇滨:依法能动履职为辛村遗址筑起“防护墙”
易方达等公司今日发行上证科创板成长ETF
车评头条:第二代逸动XT:更智能的时尚掀背车
黑龙江:锚定高质量发展 向产业振兴发力
大连到烟台轮船哪个好(大连到烟台轮船时刻表)
A股半年报盘点丨369家公司已披露 23家公司净利润超10亿
居民自治凝聚力量,他们在美好社区里共忆乡愁
创作中的摄影师
村BA的品牌化之路
茂名最大商业综合体化州万达广场已于8月10日开业
94股获券商买入评级,良信股份目标涨幅达59.01%
上海前滩31拟于今年10月底全业态开幕 涉及演艺、商业、办公、酒店四大业态
注意绕行!锡林浩特这些路段即将施工!
日经225指数开盘微跌0.03%,韩国综合指数跌0.25%
事关蔬菜稳产保供,农业农村部紧急通知→
最高降6万,新一轮“汽车降价潮”!特斯拉、蔚来等10家车企参与
Bossjob开启全球化“抢人抢岗”
如何删除淘宝登录记录(如何删除淘宝登录过的登录名和登录密码)
认知策略与元认知策略的区别 认知策略
销售毛利是指什么 销售毛利是什么意思
“村超”有了新玩法!贵州榕江美食足球友谊赛开赛
船舶701所待遇 请问一下船舶研究所701所702所708所哪个更好一点呢具体一点
洛克王国玛雅怎么获得(洛克王国玛雅怎么抓)
机动战士钢弹桑(04)(对于机动战士钢弹桑(04)简单介绍)
揭示细菌对抗生素Albicidin产生耐药性的机制
星形线的图像 星形线推导
约32亿!运达股份与临汾市政府签订合作框架协议
舞蹈家王亚彬:不愿重复大家熟悉的西游故事
生成式AI成“救星”?全球首款ChatGPT音箱来了!
卧龙地产:矿产金属类贸易业务产品主要为铜精矿 有稀土类但占比不高
cad怎么路径阵列(cad阵列怎么用)
《博德之门3》药水一览
自动驾驶上市公司股票龙头有哪些?(2023/8/14)
金龙鱼中报:净利润下滑,但现金流量大幅增长【BT财报快闪】
*ST同达(600647):8月14日技术指标出现看涨信号-“红三兵”
光格科技(688450):该股换手率大于8%(08-14)
美国篮球国家队梦之一队比赛视频_美国篮球国家队
矫正视力是什么意思5.0 矫正视力是什么意思
其实都没有歌词的寓意 其实都没有歌词
闪电解码 | 文化“两创”看山东 好戏连台来济宁
零跑B11将亮相慕尼黑 多款新车将基于四叶草架构
玉米:东南沿海报价提升 关注新季产量变动
入选全国热门Citywalk城市Top6!一起来贵阳“压马路” 登高望远
新能源车主难受!我国多地充电站突破2元1度:充一次多花10多块
电瓶车也在搞无人驾驶 你说厂商们这是图啥?
汽车越来越贵 10万以下车型早已不是主流 30万以上份额暴涨
小爱同学新版即将公布:或将得到自研AI模型助力