2020 hgame week1 wp


hgame_week1_wp

web

Cosmos 的博客

  • 提到了版本管理工具,然后可能是源码泄露
    用githack

  • 本来就想用git命令直接恢复原来版本,但是搞了半天什么都搞不出来,网上找了个linux下的图形化的GitKraken,里面就直接找一下就有了


接 头 霸 王

  • 图片一开始没懂什么意思,最后懂了,笑死

  • 按照要求添加 Referer: vidar.club,表示从vidar.club来的

  • 按要求添加 x-forwarded-for: 127.0.0.1或者 x-forwarded-for: localhost,表示来源是本地

  • 按照要求 修改 User-Agent: Cosmos

  • 把GET改成POST就ok了

  • 按照意思 if-unmodified-since: Fri, 01 Jan 2087 00:00:00 GMT

  • 写wp的时候和我原来做的时候不太一样,不过差不多,就是疯狂修改请求头


Code World

  • 直接访问的时候会302重定向到nex.php

  • 我把get请求换成了post请求(我也不知道为什么要这样)

  • 自己先这么做的,然后不成功 http://codeworld.hgame.day-day.work/index.php?a=5+5

  • 上网查了半天知道‘+’在url里面其实是空格的意思

    url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,
    这时候可以将这些字符转化成服务器可以识别的字符,对应关系如下:
    URL字符转义
    URL 中+号表示空格 %2B
    空格 URL中的空格可以用+号或者编码 %20
    / 分隔目录和子目录 %2F
    ? 分隔实际的URL和参数 %3F
    % 指定特殊字符 %25
    #表示书签 %23
    & URL 中指定的参数间的分隔符 %26
    = URL 中指定参数的值 %3D

  • 重新构造url http://codeworld.hgame.day-day.work/index.php?a=5%2B5 就ok了


🐔尼泰玫

可能的非预期解,感觉没有用到js的考点

  • 随便来一盘,然后firefox看一下包,有个POST

  • 直接改数字,然后POST提交会400


    后面的数字应该是检验用的,所以会400?

  • 在开发者工具里面双击这个改过的请求

    就有了神奇的一幕

一种用js的解法

  • 调试器里面,我选改这个地方,下断点

  • 随便再来一局自杀,到断点时,去控制台直接改数字

  • 继续执行就会跳出来flag


Reverse

maze

  • 刚到手时看不出来是个迷宫,放了两天有学习资料,稍微懂了一点
    与wiki上不太一样的地方是这里的迷宫没有直接给出来

  • 理解这个程序很重要。 我大概理解就是前两个判断是判断“人”还在迷宫里面,后面判断当前位置是不是不能踩的地方(如果是1就不能踩)。wasd控制,ws一次走64位,ad一次走4位,所以实际上一行应该是8个位置。

  • 迷宫导出来

  • 手动处理一下

  • 得到迷宫,再算一下起始位置和终点,写出来就是flag了

    Pwn

    Hard_AAAAA

    具体怎么搞的忘记了,只剩下这个了,基本栈溢出(我只会这种了)

One_Shot

  • 检查,拖进ida

  • 分析

    1. 读入flag文件并且存到flag(位于bss:00000000006010E0)
    2. name(bss:00000000006010C0),很凑巧的在flag的低一点的位置,所以正常情况下name地址到flag地址之前的值没有‘\x00’就可以在最后的时候一并输出
    3. 输入v4的值,下一行要求v4所指向的位置可写,所以直接随便指向name里面的任意位置理论上就ok了
  • 试了之后发现不成功,根据输出结果推测应该是flag:bss:00000000006010E0这个位置是‘\x00’,所以直接截断了,所以我们需要把1写入这个地址

  • 又是一个写完之后才知道题目的精髓

Crypto

InfantRSA

基础题,算就完事

Affine

  • 加密代码

    import gmpy2
    from secret import A, B, flag
    assert flag.startswith('hgame{') and flag.endswith('}')
    
    TABLE = 'zxcvbnmasdfghjklqwertyuiop1234567890QWERTYUIOPASDFGHJKLZXCVBNM'
    MOD = len(TABLE)
    
    cipher = ''
    for b in flag:
        i = TABLE.find(b)
        if i == -1:
            cipher += b
        else:
            ii = (A*i + B) % MOD
            cipher += TABLE[ii]
    
    print(cipher)
    # A8I5z{xr1A_J7ha_vG_TpH410}
  • 写了一小段c来爆破,凑合看吧

    for(int a=1;a<=1000000;a++)
            for(int b=0;b<62;b++)
                if((12*a+b)%62==46)
                    if((11*a+b)%62==33)
                        if((7*a+b)%62==43)
                            if((6*a+b)%62==30)
                                if((18*a+b)%62==0)
                                {
                                    printf("a=%d b=%d\n",a,b);
                                    return 0;
                                }
  • 数字扔回去,再写出解密代码
    import gmpy2
    
    TABLE = 'zxcvbnmasdfghjklqwertyuiop1234567890QWERTYUIOPASDFGHJKLZXCVBNM'
    MOD = len(TABLE)
    
    A=13
    B=14
    flag='A8I5z{xr1A_J7ha_vG_TpH410}'
    cipher = ''
    for b in flag:
        i = TABLE.find(b)
        if i == -1:
            cipher += b
        else:
            for j in range(0,63):
    		if (j*MOD+i-B)%A == 0:
    			yuan=((j*MOD+i-B)/A)%MOD
    			cipher += TABLE[yuan]
    			print(cipher)
    			break
                
    # A8I5z{xr1A_J7ha_vG_TpH410}

Reorder

应该叫移位密码吧,难度不大

打代码就行了


Misc

欢迎参加HGame!

  • 其实没看出是什么编码,截了一段去搜索,查到是base64

  • 下面摩斯码解出来(我去的网站)w3lc0me to 2020 hgam3,没有下划线,全是小写

  • 试了好几次,最后大写加下划线交了

壁纸

  • 常规题目,jpg分离出zip,提示去找这个这个图片的id,直接按图搜索搜不到,就直接去pixiv里面搜了,一般url最后的那个数字就是id,76953815 解开压缩包
  • 后来发现一言不合直接爆破其实更快,解开是不太正常的unicode
  • sublime里面替换一下补上两个0(猜的)

克苏鲁神话

  • 提示是培根密码

  • 解出来后是这个FLAGHIDDENINDOC

  • 将Bacon.txt压缩成zip,两个Bacon.txt的CRC32是一样的

  • 虽然我也不懂具体什么原理,但是有个操作叫明文攻击,用archpr可以解出来

    1. 网上推荐使用4.53版本,说是明文攻击速度比4.54快很多
    2. 打开里选择被加密的压缩文件,攻击方式选择明文
    3. 明文文件选择上面自己压缩的只有一个txt的zip(很多时候要这两个zip文件加密软件方式一类的一样才可以,所以题目后有hint用7zip) 、
    4. 点击开始,一般时间不会太长,成功后会让你保存文件
    5. 解压那个文件
  • 得到一个加密得doc,用前面的培根的密码就可以进去了,然后去掉这个密码,保存下来,再拖进winhex,搜索hgame就有flag了

    签到题ProPlus

Rdjxfwxjfimkn z,ts wntzi xtjrwm xsfjt jm ywt rtntwhf f y   h jnsxf qjFjf jnb  rg fiyykwtbsnkm tm  xa jsdwqjfmkjy wlviHtqzqsGsffywjjyynf yssm xfjypnyihjn.

JRFVJYFZVRUAGMAI


Three fenses first, Five Caesar next. English sentense first,  zip password next.
  • 看不太懂什么意思,后来求大佬要的hint
  • 先分成三份的栅栏密码,再凯撒移位5 方法没错的话上面会是一个英文句子,相同的方法下面就是zip密码
  • 隐约记得提出来是个base64还是32的,用python解成png,扫描二维码

每日推荐

  • 又是一个坑了我几天的题,实际过程非常艰辛,就直接说解法吧

  • Capture1.pcapng直接foremost出来发现有song.zip,那这个应该就是这个了

  • wireshark里面搜索

  • 找到一帧如2053,右键追踪TCP流

  • 前面乱七八糟的东西去掉,后面不去理论上也可以,保存成.zip

  • 有备注6位数字,直接爆破,解出一个MP3,拖进audacity

  • 切成频谱图


文章作者: Carrot2
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Carrot2 !
评论
  目录