本次线上赛赛题只有四类:固件、内核、逆向、Pwn。比赛完参考轩哥和线上师傅的博客进行复现,其中固件题目与IoT实战结合紧密,难度总体来说不大,入门友好型赛题。
- HWS冬令营介绍:HWS计划2021硬件安全冬令营重磅回归!
- 入营赛题目附件:HWS20210128.zip
Reverse
decryption
x86windows
考点:
加法的位运算实现
单子节爆破
主要加密逻辑:
1 |
for ( i = 0; i <= 31; ++i ) |
方法一
加密算法无法一眼看出对应的运算,直接写脚本进行爆破
1 |
buf = [0x12, 0x45, 0x10, 0x47, 0x19, 0x49, 0x49, 0x49, 0x1A, 0x4F, |
方法二
如果了解过加法的位运算实现的话,可以发现encrypt函数实际上是把对应input[i]加上i在异或,我们可以写出对应的逆运算:
1 |
#include <cstdio> |
ofbu
Kernel
第一次做内核,基础学习文章如下:
- Linux Kernel Basics
- linux内核基础
- Linux Kernel 环境配置及调试
- Linux Kernel Pwn 学习笔记(栈溢出)
- HWS夏令营 之 GDB调一切: 调试linux内核
基础练习题目如下:
- 练习文章:Linux Kernel Pwn 初探
- 配套题目:链接:https://pan.baidu.com/s/1yuefRhjs2KTxK2f_sC4cUA 密码:q58k
进阶练习题目如下:ISCN2017 - babydriver、2018 强网杯 - core、2018 0CTF Finals Baby Kernel
- Linux Kernel UAF CISCN2017 - babydriver
- Linux Kernel bypass-smep CISCN2017 - babydriver
- Linux Kernel ROP 2018 强网杯 - core
- Linux Kernel ret2usr 2018 强网杯 - core
- Linux Kernel Double Fetch 2018 0CTF Finals Baby Kernel
easy_kernel
逻辑总共为4个步骤
- 输入flag
- 加载驱动,调用驱动中的函数加密flag
- 长调用,加密密文
- Check,对比结果
驱动调用
查看驱动
最终调用的加密函数是驱动的sub_401340
参数分别是ring3传进来的 sub_401005(-1, &v7, aAglfTTon5iSiht, 32, v4, &Buf1);
V7是输入的flag,Buf1是加密的结果,aAglfTTon5iSiht是字符串常量}aglf_T_ton_5i_sihT_yrroS{galf
,32是长度
依据相关的加密算法的特征,可判别sub_401710是des spankey函数,sub_401620是des encrypt函数
长调用
利用call fwrod 返回用 retf
调用的是ring3下图的函数,功能很简单,就是一个简单的xor
解密脚本如下
1 |
from Crypto.Cipher import DES |
参考链接:
https://xuanxuanblingbling.github.io/ctf/pwn/2021/02/01/hws/
FROM :ol4three.com | Author:ol4three
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论