seven  hctf2018

这是一个驱动文件

ida载入,查找字符串

根据字符串来到函数:sub_1400012F0

__int64 __fastcall sub_1400012F0(__int64 a1, __int64 a2)
{
__int64 v2; // rbx
_KEYBOARD_INPUT_DATA *KEYBOARD_input; // rsi
unsigned __int64 v4; // rdx
int index; // ecx
__int16 *k_ipt; // rdi
__int64 v7; // rbp
__int16 k; // dx
char next_c; // dl
CHAR *v10; // rcx v2 = a2;
if ( *(_DWORD *)(a2 + 48) >= 0 )
{
KEYBOARD_input = *(_KEYBOARD_INPUT_DATA **)(a2 + 24);
v4 = (unsigned __int64)(*(unsigned __int64 *)(a2 + 56) * (unsigned __int128)0xAAAAAAAAAAAAAAABui64 >> 64) >> 3;
if ( (_DWORD)v4 )
{
index = dword_1400030E4;
k_ipt = (__int16 *)&KEYBOARD_input->MakeCode;
v7 = (unsigned int)v4;
while ( KEYBOARD_input->Flags )
{
LABEL_30:
k_ipt += 6;
if ( !--v7 )
goto LABEL_31;
}
aO[index] = '.';
k = *k_ipt;
if ( *k_ipt == 17 )//对应按键w
{
if ( index & 0xFFFFFFF0 ) // 大于等于16
{
index -= 16; // 向上移动
goto LABEL_13;
}
index += 208;
dword_1400030E4 = index;
}
if ( k != 31 )//对应按键s
goto LABEL_14;
if ( (index & 0xFFFFFFF0) == 208 )
index -= 208;
else
index += 16; // 向下移动
LABEL_13:
dword_1400030E4 = index;
LABEL_14:
if ( k == 30 )//对应按键a
{
if ( index & 0xF )
--index; // 向左
else
index += 15; // 最右端0位置时,+15,向左移动到最右端
dword_1400030E4 = index;
}
if ( k == 32 )//对应按键d
{
if ( (index & 0xF) == 15 ) // 右,一行0-15,16个,在最右端时,移到0位置
index -= 15;
else
++index; // 右
dword_1400030E4 = index;
}
next_c = aO[index];
if ( next_c == '*' )
{
v10 = "-1s\n";
}
else
{
if ( next_c != '7' )
{
LABEL_29:
aO[index] = 'o';
goto LABEL_30;
}
v10 = "The input is the flag!\n";
}
dword_1400030E4 = 16;
DbgPrint(v10);
index = dword_1400030E4;
goto LABEL_29;
}
}
LABEL_31:
if ( *(_BYTE *)(v2 + 65) )
*(_BYTE *)(*(_QWORD *)(v2 + 184) + 3i64) |= 1u;
return *(unsigned int *)(v2 + 48);
}

简单的迷宫题,输入是通过KEYBOARD_INPUT_DATA结构体,其第二项表示按键的扫描码

17-->w; 31-->s; 30-->a; 32-->d

分别对应上,下,左,右。

迷宫:

对应输入:ddddddddddddddssaasasasasasasasasas

hctf{ddddddddddddddssaasasasasasasasasas}

攻防世界 reverse seven的更多相关文章

  1. 攻防世界 reverse 进阶 10 Reverse Box

    攻防世界中此题信息未给全,题目来源为[TWCTF-2016:Reverse] Reverse Box 网上有很多wp是使用gdb脚本,这里找到一个本地还原关键算法,然后再爆破的 https://www ...

  2. 攻防世界 reverse evil

    这是2017 ddctf的一道逆向题, 挑战:<恶意软件分析> 赛题背景: 员工小A收到了一封邮件,带一个文档附件,小A随手打开了附件.随后IT部门发现小A的电脑发出了异常网络访问请求,进 ...

  3. 攻防世界 reverse tt3441810

    tt3441810 tinyctf-2014 附件给了一堆数据,将十六进制数据部分提取出来, flag应该隐藏在里面,(这算啥子re,) 保留可显示字符,然后去除填充字符(找规律 0.0) 处理脚本: ...

  4. 攻防世界 reverse 进阶 APK-逆向2

    APK-逆向2 Hack-you-2014 (看名以为是安卓逆向呢0.0,搞错了吧) 程序是.net写的,直接祭出神器dnSpy 1 using System; 2 using System.Diag ...

  5. 攻防世界 reverse Windows_Reverse2

    Windows_Reverse2   2019_DDCTF 查壳: 寻找oep-->dump-->iat修复   便可成功脱壳 int __cdecl main(int argc, con ...

  6. 攻防世界 reverse BabyXor

    BabyXor     2019_UNCTF 查壳 脱壳 dump 脱壳后 IDA静态分析 int main_0() { void *v0; // eax int v1; // ST5C_4 char ...

  7. 攻防世界 reverse parallel-comparator-200

    parallel-comparator-200 school-ctf-winter-2015 https://github.com/ctfs/write-ups-2015/tree/master/sc ...

  8. 攻防世界 reverse 进阶 8-The_Maya_Society Hack.lu-2017

    8.The_Maya_Society Hack.lu-2017 在linux下将时间调整为2012-12-21,运行即可得到flag. 下面进行分析 1 signed __int64 __fastca ...

  9. 攻防世界 reverse easy_Maze

    easy_Maze 从题目可得知是简单的迷宫问题 int __cdecl main(int argc, const char **argv, const char **envp) { __int64 ...

随机推荐

  1. how to design a search component in react

    how to design a search component in react react 如何使用 React 设计并实现一个搜索组件 实时刷新 节流防抖 扩展性,封装,高内聚,低耦合 响应式 ...

  2. how to check website offline status in js

    how to check website offline status in js https://developer.mozilla.org/en-US/docs/Web/API/Navigator ...

  3. 小程序 in action

    小程序 in action https://github.com/xgqfrms/xcx-taro taro https://taro-docs.jd.com/taro/docs/README.htm ...

  4. 2021 NGK生态所体验好、交易快 引人注目!

    据悉,NGK计划于2021年2月15日正式上线自己的生态所(时间待定),目的在于满足NGK生态建设者对于NGK几大币种的交易等需求,如NGK.BGV.SPC.USDN.VAST等.只要上NGK生态所, ...

  5. ⑧SpringCloud 实战:引入 Actuator监控+整合监控页面

    Actuator是什么? Spring Boot Actuator 模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP 跟踪等,帮助我们监控和管理Spring Boot 应用.这个模块是 ...

  6. 在next主题添加微信公众号二维码

    在侧边栏添加微信公众号二维码 首先,当然是准备一张微信公众号二维码.有两种添加方式,添加到侧边栏或者添加到推文的结尾处.我的next主题是7.x版本的,使用的主题是Gemini,设置的侧栏显示方式是一 ...

  7. jenkins+docker+nginx+tomcat实现vue项目部署

    一.项目准备 1.新建一个vue的项目,确保能在浏览器正常访问.然后在项目的根目录下新建一个Dockerfile的文件,内容如下 FROM nginx COPY dist /usr/share/ngi ...

  8. 使用OWASP Dependency-Check对应用做个安检

    俗话说"人怕出名猪怕壮",当系统小有名气以后就会被一些黑客盯上,三天两头的用各种漏洞扫描工具做渗透,如果不希望某天你负责的系统因为安全问题而出名,那就提前行动起来吧,这就是今天要讲 ...

  9. dpi dp px 换算关系

    getResources().getDisplayMetrics().densityDpi 就是屏幕密度.getResources().getDisplayMetrics().density 也可以理 ...

  10. 第49天学习打卡(CSS 层次选择器 结构伪类选择器 属性选择器 美化网页元素 盒子模型)

    推荐书籍:码出高效: Java 开发手册 2.2 层次选择器 idea里代码规范是按:ctrl +alt+L快捷键 注释快捷键:ctrl+/ 1.后代选择器:在某个元素的后面 祖爷爷 爷爷 爸爸 你 ...