HGAME-WEEK1

WEB:Classic Childhood Game

打开后发现是一个界面;玩了一下发现很容易死掉,别提打到第八层了,我连第三层都过不去。

根据之前做题的经验可知游戏类题目的切入点大多都在js界面和进行更改分数;果不其然在调式器找到了我们需要更改的内容

简单除暴的直接进行更改

这个游戏有点小坑,在你进行到一个感觉是封闭的界面时,要记得使用随意门道具才可以通过

WEB:Show Me Your Beauty

本题会对你的文件夹内容进行一个检查,文件夹里面若不是jpg或者gif格式的便无法进行上传

所以我们先写入一句话木马,并且将其后缀改为jpg格式

接着打开代理进行抓包,将后缀改为正常的php格式,发现不行;接下来尝试php3、php4、phtml、pht还是不行,此时想到大小写绕过发现成功


蚁剑上马后很容易就找到了flag

这里有个疑问,就是既然可以传jpg格式的木马上去,那么我可不可以使用分配式文件攻击,传.htaccess或则.user.ini文件将jpg文件解析成php文件进行访问;我在这里试了好久发现都没有办法把此类文件上传;待到wp出来之后看看有没有这种解法

WEB:Become A Member

因为题目说到是有关于HTTP的知识,所以我们先进行抓包然后发送到Repeater进行观察,此时提醒我们需要进行身份验证

此时我们更改User-Agent(创建请求的浏览器和用户代理名称等信息传达给服务器)其实一开始我是想进行修改cookie的,毕竟
题目提示了cookie结果发现不是在cookie那里

code=Vidar这个等号和两个参数让你想到了啥,那不就是cookie中的session和session的值吗,加上去加上去原来提示中的
cookie是在这里发挥了作用

这个就很常见了吧,直接在referer里面添加,之前在极客大挑战中也有遇到

接下来这个也很常见一般有三种方法:X-Forwarded-For、Client-ip、X-Real-IP;尝试了一下发现只有X-Forward-For可以使用

此时要求我们使用json的方式进行登入;这里我们需要了解一下json的格式:{“key”:”value”,”key”:”value”}
然后又要让服务端知道我们传输过去的数据是json格式所以我们添加content-type:application/json;然后在进行传输
数据(这里记得要空出一行不然会把我们传过去的数据默认为请求头,在这里卡了好久属实不应该,怎么给忘了这事了呢)
然后flag就出来啦

WEB:Guess Who I Am

因为还不会写脚本,只能一个一个输入了;等wp出来后在学习一下

Misc:Sign In

直接对aGdhbWV7V2VsY29tZV9Ub19IR0FNRTIwMjMhfQ==进行base64解码就好了

Misc:Where am I

打开后是一道流量分析的题目

因为题目中有说到是上传了一张图片所以,直接对其导出HTTP流便找到了我们要的上传文件

此时浏览内容发现里面藏了一个RAR文件

利用kali中的binwalk帮助我们分离出RAR文件

利用WINRAR帮助我们进行解压时发现文件头已经损坏,此时猜测时伪加密,利用010打开后发现确实是伪加密


此时将24改为20;解压时发现无法解压此时怀疑是binwalk无法成功提取,此时换成kali中的foremost进行文件分离

解压完后发现更改伪加密码还是不行,其实记录上面错误的过程是想提醒自己Wireshark的包还是利用Wirewalk自行导出才不会出问题;此时右键我们要导出的数据,并且以原始数据导出

导出后使用010将上面的部分和下面的部分删除,并且更改伪加密码


然后正常进行解压即可出现一张图片,右键属性便可以找到我们需要的经纬度

Misc:e99p1ant_want_girlfriend

解压之后发现是一张照片

根据提示可知该图片的CRC校验出错;此时有两种情况,一是本来这张图片的CRC值就是错误的,二是本图片的宽和高被修改过;
使用TweakPng打开后确实发现是CRC校验出错,此时使用010打开进行更改CRC值发现并没有出现啥有意义的信息

此时便怀疑是该图片的宽和高被修改过(根据之前遇到的题目一般是高会被修改)
此时利用网上的脚本进行计算正确的宽和高

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python
#-*- coding:UTF-8 -*-
import binascii
import struct
import os
crcbp = open("D:\桌面\Misc\Misc附件\e99p1ant_want_girlfriend\e99p1ant_want_girlfriend.png","rb").read()#填文件名
for i in range(1024):
for j in range(1024):
data = crcbp[12:16] + struct.pack('>i',i) + struct.pack('>i',j) + crcbp[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == 0xA8586B45 :#此处填CRC值
print (i);
print (j);
print (hex(i),hex(j))

此时确实发现是图片的宽和高被修改过

此时利用010打开后根据计算出的值进行修改高度,此时便可以得出flag

Misc:神秘的海报

解压后是一张图片,查看属性发现没有有意义的信息,接着使用010打开和记事本打开也没有啥有用的信息;接下来以为藏在右下角的那两个二维码里面;结果发现扫不出来,接下来使用Stegsolve打开,先查看File Format发现还是没有啥有价值的信息
接下来看看是不是LSB隐写,果然发现了提示和前一半的flag

我把它提取出来后大致是这样

下载音频之后,因为根据提示出题人使用Steghide进行加密,且密码是六位数;此时我们可以考虑使用Stegseek进行爆破,
此时可以打开文件夹进行查看

也可以再次通过Stehide进行解密,密码就是我们上面爆破出来的那个

其实这题并没有我所写的这么顺利;我一直以为出题人在音频之中隐藏了密码,然后找了好久都没有找到;后面进行百度之后才知道使用Steghide进行加密的文件可以通过Stegseek进行爆破,并且Stegseek是一个非常强大的爆破工具;这里体现了信息检索的重要性。

Crypto:RSA


此时发现题目给出公钥(e,n)和密文c;此时我们已知量为e、n、c;而我们的目标时求明文m;此时我们根据解密的规则,先求幂
在取余的思路;可知c^d mod(n)=m;所以此时我们需要知道d;而根据模反元素的定义,ed mod(φ(n))=1;可知我们又需要知道
φ(n);而φ(n)来源于两个互质的数的积φ(n)=p * q;所以我们的思路已经很明确了,先将p、q的值算出来;那么便可以利用脚
本进行计算;而本题的难点也就在如何将p、q算出;因为本题给出的n太过于大;所以我们无法使用yafu进行破解;这里有两个思路;
思路1:利用在线网站https://factordb.com 进行分解

分解之后我们就已经知道p、q、e、c那么就可以套脚本进行计算(因为还不会写脚本,就只能网上找了)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import gmpy2
import libnum
from Crypto.Util.number import *
from binascii import a2b_hex, b2a_hex

flag = "*****************"

p = 12022912661420941592569751731802639375088427463430162252113082619617837010913002515450223656942836378041122163833359097910935638423464006252814266959128953
q = 11239134987804993586763559028187245057652550219515201768644770733869088185320740938450178816138394844329723311433549899499795775655921261664087997097294813
c = 110674792674017748243232351185896019660434718342001686906527789876264976328686134101972125493938434992787002915562500475480693297360867681000092725583284616353543422388489208114545007138606543678040798651836027433383282177081034151589935024292017207209056829250152219183518400364871109559825679273502274955582
e = 65537
n = p * q
phi = (p - 1) * (q - 1)
d = gmpy2.invert(e, phi)
m = pow(c, d, n)
print(libnum.n2s(int(m)))


方法二:有时候可能会出现无法在https://factordb.com 找到相应的p、q;因为该网站是把我们有解出的n进行一个统计并
存储下来;所以我们此时就要借助另一个工具RsaCtfTool帮助我们进行一个暴力破解

然后利用此命令进行一个破解

1
python RsaCtfTool.py -n 135127138348299757374196447062640858416920350098320099993115949719051354213545596643216739555453946196078110834726375475981791223069451364024181952818056802089567064926510294124594174478123216516600368334763849206942942824711531334239106807454086389211139153023662266125937481669520771879355089997671125020789 -e 65537 --uncipher 110674792674017748243232351185896019660434718342001686906527789876264976328686134101972125493938434992787002915562500475480693297360867681000092725583284616353543422388489208114545007138606543678040798651836027433383282177081034151589935024292017207209056829250152219183518400364871109559825679273502274955582

Crypto:神秘的电话

这题最后还是没有解出来,因为之前除了签到杯以外都没有接触过密码;所以感觉有点陌生;不过还是把思路写一下吧
题目中给的音频已经说是莫斯密码了,那就先解出来看看;


接下来对给出的字符串再次进行解码,试了试,后面发现是base64的加密;

根据提示发现是18层的栅栏加密;此时我们对莫斯密码进行十八层的栅栏解密

此时在这个字符串中看到了分开的HGAME字母,此时猜测是被打乱了先猜测是凯撒密码;可是发现因为凯撒密码不需要密钥;所以此时猜测是维吉尼亚密码;但是后面一直没有密钥的思路,这题就卡住了;等wp出来在看看吧,我也不知道自己的思路对不对,今后还是要多少了解一下基础的密码。

Pwn:test_nc

Reverse:test your IDA