又一年,不过今年的质量有些…..
0x01Misc
What is that?
附件地址:What is that
查看图片信息,使用传统的方法解答没见效,使用TweakPNG
查看图片信息。
将高度调整即可得到flag。
秘密电报
查看附件,内容为:
1 | 秘密电报: |
老司机一看就是培根密码了,flag为:ILIKEISCC
Where is the FLAG?
附件地址:Where is the FLAG
题目:不只是Logo
查看详细信息,发现是由Adobe Fireworks CS5
保存出来的图片,那就用Adobe Fireworks CS5
打开。
调整画布大小,开始摆,得出一张二维码。flag{a332b700-3621-11e7-a53b-6807154a58cf}
一只猫的心思
附件地址:一只猫的心思
题目:你能读懂它的心思吗?
使用foremost
抽离图片,得到一个doc文件,打开,内容为:
1 | 名西三陵帝焰数诵诸山众參哈瑟倒陰捨劫奉惜逝定雙月奉倒放足即闍重号貧老诵夷經友利普过孕北至花令藐灯害蒙能羅福羅夢开雙禮琉德护慈積寫阿璃度戏便通故西故敬于瑟行雙知宇信在礙哈数及息闍殺陵游盧槃药諦慈灯究幽灯豆急彌貧豆親诵梭量树琉敬精者楞来西陰根五消夢众羅持造彌六师彌怖精僧璃夫薩竟祖方夢訶橋經文路困如牟憐急尼念忧戏輸教乾楞能敬告树来楞殊倒哈在紛除亿茶涅根輸持麼阿空瑟稳住濟号他方牟月息盡即来通貧竟怖如槃精老盡恤及游薩戏师毒兄宝下行普鄉释下告劫惜进施盡豆告心蒙紛信胜东蒙求帝金量礙故弟帝普劫夜利除積众老陀告沙師尊尼捨惜三依老蒙守精于排族祖在师利寫首念凉梭妙經栗穆愛憐孝粟尊醯造解住時刚槃宗解牟息在量下恐教众智焰便醯除寂想虚中顛老弥诸持山諦月真羅陵普槃下遠涅能开息灯和楞族根羅宝戒药印困求及想月涅能进至贤金難殊毘瑟六毘捨薩槃族施帝遠念众胜夜夢各万息尊薩山哈多皂诵盡药北及雙栗师幽持牟尼隸姪遠住孕寂以舍精花羅界去住勒排困多閦呼皂難于焰以栗婦愛闍多安逝告槃藐矜竟孕彌弟多者精师寡寫故璃舍各亦方特路茶豆積梭求号栗怖夷凉在顛豆胜住虚解鄉姪利琉三槃以舍劫鄉陀室普焰于鄉依朋故能劫通 |
到与佛论禅进行解密,得到一串16进制字符串,接下来:
1 | 16进制-->文本-->base64解密-->base32解密-->文本-->base64解密-->base32解密-->文本 |
得到F1a9_is_I5cc_ZOl8_G3TP01NT
暴力XX不可取
附件地址:暴力XX不可取
题目:A同学要去参加今年的ISCC。大赛在即,A同学准备了一批暴力破解工具,你感觉这个靠谱吗?
下载附件直接能解压,flag.txt的内容为vfppjrnerpbzvat
,凯撒解密得出flag为:isccwearecoming
重重谍影
题目:这是一道脑洞题,简单的要命。层层迷雾之后就是答案,刹那便是永恒。南无阿弥陀佛。
1 | Vm0wd2QyVkZOVWRXV0doVlYwZG9WVll3WkRSV2JGbDNXa1JTVjAxWGVGWlZNakExVjBaS2RHVkljRnBXVm5CUVZqQmtTMUl4VG5OaFJtUlhaV3RHTkZkWGRHdFRNVXB6V2toV2FsSnNjRmhhVjNoaFYxWmFjMWt6YUZSTlZtdzBWVEo0YzJGR1NuTlhiR2hYWVd0d2RsUnRlR3RqYkdSMFVteFdUbFp0ZHpCV2EyTXhVekZSZUZkc1ZsZGhlbXhoVm01d1IyTldjRVZTYlVacVZtdHdlbGRyVlRWVk1ERldZMFZ3VjJKR2NIWlpWRXBIVWpGT1dXSkhhRlJTVlhCWFZtMDFkMUl3TlhOVmJGcFlZbGhTV1ZWcVFURlRWbEY0VjIxR2FGWnNjSGxaYWs1clZqSkdjbUo2UWxwV1JWcDZWbXBHVDJNeGNFaGpSazVZVWxWd1dWWnRNVEJXTVUxNFdrVmtWbUpHV2xSWlZFNVRWVVpzYzFadVpGUmlSbHBaVkZaU1ExWlhSalpTYTJSWFlsaENVRll3V21Gak1XUnpZVWRHVTFKV2NGRldha0poV1ZkU1YxWnVTbEJXYldoVVZGUktiMDB4V25OYVJFSm9UVlpXTlZaSE5VOVdiVXB5WTBaYVdtRXhjRE5aTW5oVFZqRmFkRkpzWkU1V2JGa3dWbXhrTUdFeVJraFRiRnBYWVd4d1dGWnFUbE5YUmxsNVRWVmFiRkp0VW5wWlZWcFhZVlpLZFZGdWJGZGlXRUpJV1ZSS1QxWXhTblZWYlhoVFlYcFdWVmRYZUZOamF6RkhWMjVTYWxKWVVrOVZiVEUwVjBaYVNFNVZPVmRXYlZKS1ZWZDRhMWRzV2taWGEzaFhUVlp3V0ZwR1pFOVRSVFZZWlVkc1UyRXpRbHBXYWtvd1lURkplRmR1U2s1V1ZscHdWVzB4VTFac1duUk5WazVPVFZkU1dGZHJWbXRoYXpGeVRsVndWbFl6YUZoV2FrWmhZekpPUjJKR1pGTmxhMVYzVjJ0U1IyRXhUa2RWYmtwb1VtdEtXRmxzWkc5a2JHUllaRVprYTJKV1ducFhhMXB2Vkd4T1NHRklRbFZXTTJoTVZqQmFZVk5GTlZaa1JscFRZbFpLU0ZaSGVGWmxSbHBYVjJ0YVQxWldTbFpaYTFwM1dWWndWMXBHWkZSU2EzQXdXVEJWTVZZeVNuSlRWRUpYWWtad2NsUnJXbHBsUmxweVdrWm9hVkpzY0ZsWFYzUnJWVEZaZUZkdVVtcGxhMHB5VkZaYVMxZEdXbk5oUnpsWVVteHNNMWxyVWxkWlZscFhWbGhvVjFaRldtaFdha3BQVWxaU2MxcEhhRTVpUlc4eVZtdGFWMkV4VVhoYVJXUlVZa2Q0Y1ZWdGRIZGpSbHB4VkcwNVZsWnRVbGhXVjNSclYyeGFjMk5GYUZkaVIyaHlWbTB4UzFaV1duSlBWbkJwVW14d2IxZHNWbUZoTWs1elZtNUtWV0pHV2s5V2JHaERVMVphY1ZKdE9XcE5WbkJaVld4b2IxWXlSbk5UYldoV1lURmFhRlJVUm1GamJIQkhWR3hTVjJFelFqVldSM2hoWVRGU2RGTnJXbXBTVjFKWVZGWmFTMUpHYkhGU2JrNVlVbXR3ZVZkcldtdGhWa2w1WVVjNVYxWkZTbWhhUkVaaFZqRldjMWRzWkZoU01taFFWa1phWVdReFNuTldXR3hyVWpOU2IxVnRkSGRXYkZwMFpVaE9XbFpyY0ZsV1YzQlBWbTFXY2xkdGFGWmlXRTE0Vm0xNGExWkdXbGxqUms1U1ZURldObFZyVGxabGJFcENTbFJPUlVwVVRrVSUzRA== |
一直base64
解码,得到
1 | U2FsdGVkX183BPnBd50ynIRM3o8YLmwHaoi8b8QvfVdFHCEwG9iwp4hJHznrl7d4B5rKClEyYVtx6uZFIKtCXo71fR9Mcf6b0EzejhZ4pnhnJOl+zrZVlV0T9NUA+u1ziN+jkpb6ERH86j7t45v4Mpe+j1gCpvaQgoKC0Oaa5kc= |
以U2FsdGVkX1
开头的密文是AES加密
,,然后使用openssl
进行解密,顺带猜密码,最后在encrypt解密得到
1 | 缽娑遠呐者若奢顛悉呐集梵提梵蒙夢怯倒耶哆般究有栗 |
到与佛论禅进行解密得出flag为:把我复制走
凯撒十三世
题目:凯撒十三世在学会使用键盘后,向你扔了一串字符:“ebdgc697g95w3”,猜猜它吧。
这个比较明显,就是取凯撒的13行,也就是rot13
,结果是roqtp697t95j3
,再进行键盘密码解密,得到flag为:yougotme
,唯一的小坑就是对这个键盘密码的时候。
有趣的ISCC
附件地址有趣的ISCC
题目:在ISCC的平台上,跟小伙伴们一起闯关,是不是很有趣啊!!!猜猜我在图片中隐藏了什么?
查看图片信息,最末尾发现了
1 | &.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.4.;.&.#.5.4.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.4.;.&.#.9.9.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.4.;.&.#.4.9.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.4.;.&.#.5.5.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.5.;.&.#.9.8.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.4.;.&.#.5.7.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.5.;.&.#.5.1.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.4.;.&.#.5.1.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.4.;.&.#.5.1.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.0.;.&.#.4.8.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.4.;.&.#.5.7.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.5.;.&.#.5.1.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.0.;.&.#.4.8.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.4.;.&.#.5.4.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.5.;.&.#.5.3.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.4.;.&.#.1.0.1.;.&.#.9.2.;.&.#.1.1.7.;.&.#.4.8.;.&.#.4.8.;.&.#.5.5.;.&.#.1.0.0.; |
处理还原,得出
1 | \u0066\u006c\u0061\u0067\u007b\u0069\u0073\u0063\u0063\u0020\u0069\u0073\u0020\u0066\u0075\u006e\u007d |
再还原就成了flag{iscc is fun}
数字密文
题目:这里有个很简单的flag,藏在下面这串数字里,猜猜吧!69742773206561737921
16进制转个文本就行。
挖宝计划
题目附件:挖宝计划
题目:小明手里有一个宝箱(treasureBox.zip),但无法打开。求助于先知,但只得到了一张藏宝图(getFlay.py),你能参透先知的深意,帮小明挖出宝藏吗?
去年没解出来的数据分析题目。
查看zip的内容,发现是有解压密码的,但是不知道是什么,发现zip
内也有一个getFlag.py
,大小及CRC值
一致,所以推断是存在明文攻击的解压漏洞。
但是,还是与去年一样的问题。但是根据去年主办方在线下决赛后发出的文章来看,是有些小提示的
1 | "以文找文"(寻"文"启事 众里寻他千百度,蓦然回首,那人却在,灯火阑珊处)数据分析题 |
降低题目难度后,思路:将6000个文件与sample对比,找到内容最为接近的5个文件,取其文件MD5值,emmmm。
嵌套ZIPs
题目附件:嵌套ZIPs
题目:A老师听说b同学要去参加今年的ISCC,便出题考一考b同学,你能帮b同学渡过难关吗?
看到ZIPs
感觉就是一直要爆破的节奏。没什么思路那就爆破了。
解出来,又是明文攻击
ISCC_!S_my_favor1te_CTF
0x02 Web
比较数字大小
限制了长度为3,将maxlength
修改为大于3的值再输入超过3位数的数字即可,比如maxlength=33
,输入值为12345
或者直接抓包改值。
flag为:768HKyu678567&*&K
你能跨过去吗?
页面显示
1 | Key Words:XSS |
对其中的base64编码进行解码,得出<script>alert("key:/%nsfocusXSStest%/")</script
,提交/%nsfocusXSStest%/
即可得出flag
一切都是套路
hit:好像有个文件忘记删了
打开index.php.txt
发现
1 |
|
需要满足3个if才能得到flag,这是个$$
导致的变量覆盖问题。题目中使用了两个foreach并且也使用了$$
,两个foreach中对$$k
的处理是不一样的,满足条件后会将$flag
里面的值打印出来。
但由于第5与第13-14行的代码会将$flag
的值给覆盖掉了,所以需要先将$flag
的值赋给$_200
或$_403
,然后利用die($_200)
或 die($_403)
将flag打印出来。
你能绕过吗?
hit:没过滤好啊
这个题目,最开始以为是注入题,毕竟这个题目这个显示。
尝试了id
的注入点,最后在尝试修改f参数
为index.php
,发现带有php参数的显示了 error...
,最后的尝试
index.php
的源码为
1 |
|
原来如此,怪不得带有php的都报错了。
web02
打开链接显示
1 | 错误!你的IP不是本机ip! |
应该就是伪造IP了。尝试各种伪造IP的http头
1 | X-Forwarded-For |
本地的诱惑
题目:小明扫描了他心爱的小红的电脑,发现开放了一个8013端口,但是当小明去访问的时候却发现只允许从本地访问,可他心爱的小红不敢让这个诡异的小明触碰她的电脑,可小明真的想知道小红电脑的8013端口到底隐藏着什么秘密(key)?(签到题)
右键源码:
1 |
|
Please give me username and password!
访问index.php.txt
。
1 |
|
绕过即可username[]=&password=9e9
试试看
题目:随意开火
查看图片,观察URL为/show.php?img=1.jpg
。已经没有别的页面了,估计就是文件读取
1 | ?img=php://filter/read=convert.base64-encode/resource=1.jpg # 正常访问 |
有戏,右键查看源码,发现已经能读到PHP源码了,接下来就是直接找flag所在,最后在../flag.php
找到flag
请ping我的ip 看你能Ping通吗?
题目:我都过滤了,看你怎么绕。
题目地址:http://118.190.152.202:8018
直接访问http://118.190.152.202:8018/flag.txt 就出现flag了。
正确解法是
SQL注入的艺术
扫描扫到/admins
,访问直接下载,打开发现是数据库链接信息,内部含有flag。
正确解法:宽字节注入
1 | http://118.190.152.202:8015/index.php?id=1%df%27 |
web01
1 |
|
想都不想,直接/password[]=flag
Collide
题目:那么长的秘钥,要爆破到什么时候啊
1 |
|
hash长度扩展攻击
$key
变量我们是不知道的,但是从len
值中能获取到长度为46
- 从
verify
中得到md5($key.guest)
的值为:78cfc57d983b4a17e55828c001a3e781
- 成功登陆条件:
username=guestxxxxxxxxadmin
,并且verify
要等于md5($key.uaername)
1 | hashpump -s 78cfc57d983b4a17e55828c001a3e781 -d guest -k 46 -a admin |
这个提交得看脸。
ISCC{MD5_1s_n0t_5afe}
Only admin can see flag
查看源码发现提示index.txt
1 |
|
CBC字节反转攻击攻击题目,先将输入的账号密码序列化,也就是获取$plain
。
1 |
|
我们的目的就是将Admin
中的A
转换成a
,接下来就是把明文分成16个字节的块(因为AES-128
以128位为一块,正好16字节)
1 | a:2:{s:8:"userna |
我们目标字符位于块2,这意味这我们需要改变块1的密文来改变第二块的密文。
1 | #!/usr/bin/env python |
但是第一块的内容显示不出来,接下来就是获取新的iv值及flag的获取。
1 |
|
替换提交即可登陆真正的admin
用户。
1 | <p>Hello admin</p><p>Flag is ISCC{123dasd89as10aas}</p><p><a href="loginout.php">Log out</a></p> |
php是世界上最好的语言
1 | <html> |
看到第19行,明显的弱类型绕过。密码填写240610708
1 |
|
绕过即可
1 | no_md5.php?a=flag |
Only Admin
题目:听说只有admin可以看到flag?
最开始以为是利用MySQL的超长截断特性进行注册登陆,发现没成功。
扫描目录,发现有一个web.zip文件。
1 | web |
审计,难受。 其实也就是带cookie
访问的问题。
exp
1 | #!/usr/bin/env python |
为什么这么简单啊
进入,
1 | 第一关 |
伪造IP
1 | GET / HTTP/1.1 |
进入到第二关,寻找密码。右键源码看到password.js
,解密其中的base64,得到密码xinyiji.com
flag:B1H3n5u0xI2n9JIscc
Sqli
在username
存在延迟注入。
1 | python sqlmap.py -r post.txt --level 3 --tamper=space2comment --time-sec 6 -D "sqli_database" -T "user" -C "username,pass" --dump |
登陆发现提示flag在另一个字段
1 | python sqlmap.py -r post.txt --level 3 --tamper=space2comment --time-sec 6 -D "sqli_database" -T "news" -C "kjafuibafuohnuvwnruniguankacbh" --dump |
有种你来绕
题目:我都过滤了,看你怎么绕。记住是mysql
只给了一个登录框,然后没了,那么尝试了一下admin, admin提示密码错误,再尝试了下其他的用户名密码,提示用户名错误,确定用户名就是admin
注入,过滤了空格、#、*、union、like、regexp、and、or、|、–、&、%0a、%0b、%0c、%0d
等,需要想办法用其他操作符连接注入语句和闭合’。
原文操作:https://blog.l1n3.net/writeup/swpu_ctf_2016_writeup/
得出密码为0416af0a8accf2be556a8e131438b814(nishishabi1438)
登陆之后和原题不一样了,直接填写flag
就出现了flag值。
flag{sql_iNjEct_Is_Easy}
0x03 Reverse
RSA256
三个加密文件一个公钥。
1 | import gmpy2 |
My math is bad
程序地址:My math is bad
题目:I think the math problem is too difficult for me.
1 | # file Reverse |
IDA又是不显示main函数
满足sub_400766()
就输出sub_400B16()
,那就,直接看sub_400B16()
?看了看,不行哦,捷径走不了,那就看sub_400766()
里的东西。
1 | if ( strlen(s) == 32 ) |
结合动态分析,程序先判断输入值长度是否为32位,接下来将输入值进行拆分成
1 | s、dword_6020A4、dword_6020A8、dword_6020AC、 |
依次验证,满足条件即返回1,则通过校验。
详细看看第8-13行,4个未知数和四个方程,emmm。
1 | dword_6020A4 *s - dword_6020AC * dword_6020A8 == 2652042832920173142 |
利用python的z3
库
1 | #/usr/bin/env python |
接下来到异或运算,直接用C语言
吧
1 | #include <stdio.h> |
然后继续接下来的方程
1 | #/usr/bin/env python |
将数字串转换成字符串。
1 | #/usr/bin/env python |
得出正确的输入值,输入输出
0x04 PWN
Login
题目:nc 47.104.16.75 9000
程序地址:Pwn-Login
下载附件倒入IDA
进行分析
程序运行过程:
1 | main()-->Login()-->Menu()-->ExecCmd()-->ShowUserlist()... |
查看Login()
内容,总的看没什么特别的,接下来看Menu()
1 | { |
注意看第18行的代码。非常简单,单纯的读取一串字符串,然后储存在buf
里面,但是,开辟的缓存区只有0x50
字节大小,但是read
最多可以读取0x280
字节大小,这样就会造成缓存区溢出,也就是栈溢出漏洞。
接下来再看ExecCmd()
1 | int ExecCmd() |
我们要做的:如下图,程序不经过红框内,直接跳过输出。
也就是将return
修改到call system
,记住交互的最后还得输入一个3退出while循环
脚本:
1 | from pwn import * |
flag{welcome_to_iscc}
Mobile
小试牛刀
附件地址:小试牛刀
拖进JEB2
,查看Manifest
、action
等基础信息。这道题的坑就是壳的问题。
后来发现,Assets
中的bfsprotect.jar
就是源码。
右键MainActivity
选择Decompile
查看源码,一览无遗。
在onCreate()
中发现了下面这个判断,与APP页面的判断显示一致。
1 | public void onClick(View arg5) { |
进入ProtectClass()
查看,就能看到对比的值,也就是flag值
1 | public boolean protectMethod(String arg4) { |
或者,打开bfsprotect.jar
,直接搜索iscc
即可得到flag