河南省第五届“金盾信安杯”网络与数据安全大赛实操技能赛 部分wp(自己的一些思路和解析 )(主misc crypto )

芜湖

不评价 以下仅是自己的一些思路和解析  有什么问题或者建议随时都可以联系我

目录

题目一 来都来了

操作内容:

flag值:

题目二 Honor

操作内容:

flag值:

题目三 我看看谁还不会RSA

扫描二维码关注公众号,回复: 17237377 查看本文章

操作内容:

flag值:

题目四 hakiehs

操作内容:

flag值:

题目五 Font

操作内容:

flag值:

题目六 ApeCoin

操作内容:

flag值:

题目七 Easyphp

操作内容:

flag值:

题目八 Ezupload

操作内容:

flag值:

题目九 get_source

操作内容:

flag值:

加油各位( •̀ ω •́ )y 期待与君再相逢 


解题思路及过程

题目一 来都来了

操作内容:

附件只有一个压缩包

但解压需要密码 我们查看源码 经过对比 发现是伪加密

将09改为00

得到题目

很明显是base解码

将其放在txt里

使用not++打开 缩放 得到flag

flag值:

flag{cp2ae315-eef4-3fra-a768-cd9xb19cdk4e}

题目二 Honor

操作内容:

附件只有图片一张

正常的查看源码

发现存在第二张图片

Kali foremost分离

得图

经过多工具尝试

使用stegdetect判断存在隐写

Stegdetect.exe -tjopi -s 10.0 00001995.jpg

然后用stegseek使用rockyou字典(kali自带)爆破

stegseek  00000000.jpg rockyou.txt

得到最终加密字符

f6l3-a6ag3c}{-bc4c5e28-e4649c76b0-707e6069

这不是栅栏密码就是凯撒密码

经过尝试 栅栏密码 12栏数

在线网站 (标准的他还跑不出来

栅栏加密/解密 - Bugku CTF

flag值:

flag{424c076e-768c-3636-acb5-4676900b9eec}

题目三 我看看谁还不会RSA

操作内容:

只有一个py

这一看标准的RSA

根据源编码 编写脚本

这里提供两个 脚本

from Crypto.Util.number import *

c=8232151627233115772131180151146951323147507324390914513031444555762539986162650

p=8666789885346075954502743436174521501697

q=2449101960789395782044494299423558347143

n = p*q

phin = (p-1)*(q-1)

e=37777



m = pow(c,e,n)

print(long_to_bytes(m))

import gmpy2
from Crypto.Util.number import *
def find_m(c, d, n, p, q):
    f = (p - 1) * (q - 1)
    e = 37777
    d_inv = gmpy2.invert(d, f)
    m = pow(c, d_inv, n)
    return m
c = 8232151627233115772131180151146951323147507324390914513031444555762539986162650
e=37777
p = 8666789885346075954502743436174521501697
q = 2449101960789395782044494299423558347143
n = p*q
f = (p-1)*(q-1)
d = gmpy2.invert(e,f)
m = find_m(c, d, n, p, q)
print(long_to_bytes(m))

flag值:

flag{r5a_Who_w0nt}

题目四 hakiehs

操作内容:

还是只有一个文件

Vsdx的后缀

像这种文档类文件 我们可以直接转化为压缩包格式的 在里面查找线索

解压缩

Crypto-hakiehs\attachment\attachment\visio\media

在这个地址找到 图片密文

进过信息检索

找到相对应的对照表

对照 字母小写 得flag

flag值:

flag{linkzeldaganon}

题目五 Font

操作内容:

这个题有点意思 玩脑洞 完全可以当misc出了

附件是只有一张图片

敏捷的狐狸和懒惰的狗

在图片属性里发现提示

刚开始以为是emoji解密 也试了aea 都不行

所以这种加密方式只可能是出题人自创

对照表要么在图片里 要在文字里

但要考虑到这个题是密码题 不是misc

所以应该没有太多的隐写 就想简单点

总共有两行

猜测 一行是答案 一行是对照

总共35的字符

然后看图片

图片的字面意思就是

一只敏捷的棕色狐狸扑向一只懒狗

翻译一下 要凑够35个字符

theQuickbrownfoxjumpsoverthelazydog

用这个去和第一行(◎☀◐♬¤☾♀☹☽§♪℗♩☑♪®♂¤☒♫〼♪۞◐§◎☀◐◑☼♭©☺♪√)组成对照表

√:g;♪:0;☺ d;© y;♭ z;☼ a;◑ l;◐ e;☀ h;◎  t;§  r;◐  e;۞  v;♪  o;〼  s;♫ p;☒  m;¤  u;♂  j;® x;♪ o;☑  f;♩  n;℗  w;♪ o;§  r;☽  b;☹  k;♀  c;☾  i;¤ u;♬ q;◐  e;☀ h;◎  t

最后根据这个对照表

去解第二行 得到flag

flag值:

 flag{qtsyjfgvbndhflhgfnmjfhko}

题目六 ApeCoin

操作内容:

使用dirsearch扫描目录,发现源码泄露

在/static/font/目录下发现.txt.php后门文件

在CMD5解密得到连接密码74658263,使用冰蝎连接得到flag

flag值:

flag{50ddd4d4-c403-422f-af67-3805077076aa}

题目七 Easyphp

操作内容:

根据提示使用php伪协议读取hint.php文件

Base64解码后得到源文件

根据hint.php代码可知,需要构造pop链来执行get->__call中的eval函数。

各魔术方式调用方式

__call():调用不存在或不可见的成员方法时,PHP会先调用__call()方法来存储方法名及其参数

__isset():当对一个对象的不存在或不可访问的属性使用 isset() 或 empty() 函数时自动调用,传递属性名作为参数。

__wakeup():在对象被反序列化(使用 unserialize() 函数)之前自动调用,可以在此方法中重新初始化对象状态。

__destruct():类的析构函数,在对象销毁之前自动调用析构函数

__toString():当使用echo或print输出对象将对象转化为字符串形式时,会调用__toString()方法

构造的pop链(倒推)为:使用__isset()触发__call(),然后使用__toString触发__isset(),最后使用__destruct()触发__toString()。要注意的是__wakeup不能使用表示属性个数的值大于真实属性个数的方法绕过,但是我们可以让dog->b的地址给a,再将c赋值ct类。get::__call()->mouse::__isset()->ct::__toString()->dog::__destruct()

又因为hint.php过滤了很多函数

所以将表示字符串类型的s大写为S,其对应的值会被当作十六进制解析(长度不能改变)

查看realflag目录下的文件

查看you_want_flag.php文件得到flag

得到flag

flag值:

flag{28fabc34-48bb-4959-b3c7-a67ddb343d8d}

题目八 Ezupload

操作内容:

使用dirsearch扫描目录发现flag文件,访问得到flag

得到flag

flag值:

flag{71a58713-31d7-4ae7-a5f7-d4889a8ec2e3}

题目九 get_source

操作内容:

访问地址发现该网站使用的是php7.4.21。想到了php<=7.4.21Development Server源码泄露漏洞,利用该漏洞查看idnex.php

要POST传入a,b,pwn三个变量且a不能等于b且a的MD5值要和pwn的sha1值相等,我们可以使用数组绕过得到flag

得到flag

flag值:

flag{25e02e06-3553-4a5b-bfa9-b1fff4745dde}

加油各位( •̀ ω •́ )y 期待与君再相逢 

猜你喜欢

转载自blog.csdn.net/m0_68012373/article/details/134621058