MISC
签到题 5pt
关注大赛微信公众号,发送:科来杯选拔赛,你就能得到flag啦...
backdoor 15pt
黑客在服务器上种了个后门,从服务器上偷取了重要文件,找到那个文件。
通过分析,我们能发现黑客上传了一个zip文件,内容如下:
通过分析代码可以知道黑客把这一串数据上传到服务器上并保存为
reverseshell.zip
稍微改一下代码然后在本机的php环境中执行
<?php
$c='504B03041400000************0500000000';//省略
$c=str_replace("\r","",$c);
$c=str_replace("\n","",$c);
$buf="";
for($i=0;$i<strlen($c);$i+=2)
$buf.=urldecode('%'.substr($c,$i,2));
print_r($buf);
file_put_contents("1.zip", $buf);//保存文件
然后打开web目录下的1.zip文件,里面只有一张二维码图片(左下角我就当没看见好了)
流量包分析 15pt
找到特殊的脚本文件,你就能得到flag
重点分析POST shell.php的几个请求
执行一下这段代码,输出结果如下:
Mobile
babyApk 15pt
又又又又是Login......
使用jadx-gui反编译apk文件,在MainActivity的onCreate方法中找到密文和解密算法,复制出来编译执行一下即可得到flag。
Web
有趣的PHP与JS 20pt
闯关开始...
http://47.105.128.100:2333/
打开网站,查看源代码,在http请求头中伪装一下IP即可
与客户IP有关的请求行:
x-forwarded-for
x-remote-IP
x-originating-IP
x-remote-ip
x-remote-addr
x-client-ip
x-client-IP
X-Real-ip
懒得挨个测试了,都复制进去了。
根据返回结果,访问另一个url
修改User-Agent即可
Mozilla/5.0 (Macintosh; Intel Mac OS X 99) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A
没毛病,果然还有第二关
很简单,利用两个字符串的MD5都是0e****开头就好了,php会认为这是科学记数法表示的数值。
提供几组md5
240610708 0e462097431906509019562988736854
314282422 0e990995504821699494520356953734
571579406 0e972379832854295224118025748221
903251147 0e174510503823932942361353209384
1110242161 0e435874558488625891324861198103
1320830526 0e912095958985483346995414060832
仔细看和第二关的区别
如果给md5函数传一个对象的话会返回null,所以我们可以传两个不一样的数组对象过去
http://47.105.128.100:2333/********.php?a[]=1&b[]=2
后面的6位字符每次刷新都会变化,爆破代码如下:
import hashlib, sys
for i in range(1, 10000000):
s = str(i)
hl = hashlib.md5()
hl.update(s.encode(encoding='utf-8'))
de = hl.hexdigest()
print('MD5加密前为 :' + s)
print('MD5加密后为 :' + de)
if de[:6] == '3b01a4':
sys.exit()
查看源代码,找到pin码
Reverse
re-elf 10pt
Give me something interesting