“强网杯”网络安全挑战赛writeup

赛事简介:

“强网杯”网络安全挑战赛是面向国内信息安全企业(团队)和高等院校的一次国家级网络安全赛事,旨在通过激烈的网络竞赛对抗,培养和提高国家网络安全保障能力和水平,发现网络安全领域优秀人才,提升全民网络空间的安全意识和能力水平。此次挑战赛将按照“公平、公开、公正”的原则,邀请国内优秀信息安全企业和高等院校参加,为他们提供展示能力和水平的竞技舞台。

第一届“强网杯”网络安全挑战赛由中国网络空间安全协会(筹)竞评演练工作委员会主办的面向信息安全人才的全国性比赛。该项比赛对于进一步发掘、培养国家网络安全人才具有深远意义。

第一届“强网杯”网络安全挑战赛将采取线上、线下相结合的方式进行,赛程分两个阶段。

第一阶段的资格赛为线上进行的公开赛,第二阶段为线下进行的封闭赛。通过“资格赛”的团队可进入第二阶段的“封闭赛”。资格赛已经于5月30日至31日结束。

《“强网杯”网络安全挑战赛writeup》

 

大致题目列表如下,有部分未解出,持续更新~

《“强网杯”网络安全挑战赛writeup》

《“强网杯”网络安全挑战赛writeup》

OLD-FASHION

《“强网杯”网络安全挑战赛writeup》

密码

古典密码的安全性不高,但仍然十分美妙,请破译下面的密文。

              Os drnuzearyuwn, y jtkjzoztzoes douwlr oj y ilzwex eq lsdexosa kn pwodw tsozj eq ufyoszlbz yrl rlufydlx pozw douwlrzlbz, ydderxosa ze y rlatfyr jnjzli; mjy gfbmw vla xy wbfnsy symmyew (mjy vrwm qrvvrf), hlbew rd symmyew, mebhsymw rd symmyew, vbomgeyw rd mjy lxrzy, lfk wr dremj. Mjy eyqybzye kyqbhjyew mjy myom xa hyedrevbfn lf bfzyewy wgxwmbmgmbrf. Wr mjy dsln bw f1_2jyf-k3_jg1-vb-vl_l

注:本题 flag 并非 flag{可见字符} 的形式。

猜测是字符变换类的加解密,尝试凯撒等算法暴力破解无果。

最后找到这个网站http://quipqiup.com/index.php
这个网站进行解密,Puzzle中填入密文,
根据段落猜测dsln应该为flag,因此在Clues中填入dsln=flag,进行破解:

《“强网杯”网络安全挑战赛writeup》

 

So the flag is n1_2hen-d3_hu1-mi-ma_a

最好的语言

Web渗透

大家都说 PHP 是世界上最好的语言,你也这么认为吗?

服务器请访问 http://119.254.101.197:22230/fca269b68b1efd69dd022764cd1d3ac0/index.php

《“强网杯”网络安全挑战赛writeup》

看url没看出来啥 测测备份文件啥的 发现:http://119.254.101.197:22230/fca269b68b1efd69dd022764cd1d3ac0/index.php.bak

获得源码:

<?php

//TODO: connect to DB

$id = $_GET['id'];

//TODO: sqli filter

$secretId = 1024;
if($id == $secretId){
echo 'Invalid id ('.$id.').';
}
else{
$query = 'SELECT * FROM notes WHERE id = ''.$id.'';';
$result = mysql_query($query,$conn);
$row = mysql_fetch_assoc($result);

echo "notes: ".$row['notes']."</br>";
}
?>

然后就很简单 知道是考php这种弱类型语言 构造访问得flag

http://119.254.101.197:22230/fca269b68b1efd69dd022764cd1d3ac0/index.php?id=1024.00000000001

notes: flag{php_is_so_awesome_ever_ever_ever###}

 

guess

溢出利用

这里有一个看图猜谜的游戏,猜猜看有没有漏洞?

下载题目文件:guess

连接破解服务器:nc 119.254.101.197 10000

《“强网杯”网络安全挑战赛writeup》

 

KEYGEN

逆向

这是一款最新软件的序列号验证程序,你能破解它吗?

下载题目文件:sn_download

连接破解服务器:nc 119.254.101.197 10005

《“强网杯”网络安全挑战赛writeup》

  1. 检查输入的sn,不能和历史输入相同
  2. 进行十次检测,全部正确则输出flag
  3. 输入的序列号会有长度检测 cmp rax, 18h
  4. 字符串操作
    《“强网杯”网络安全挑战赛writeup》
  5. md5缓冲区
    《“强网杯”网络安全挑战赛writeup》
  6. 格式化md5
    《“强网杯”网络安全挑战赛writeup》
  7. 检测特殊字符《“强网杯”网络安全挑战赛writeup》

最后据上述分析,分析算法写出keygen,生成不同的10个sn号,获得flag    flag{b1nary-1s-e3zy}

RINGTONE

《“强网杯”网络安全挑战赛writeup》

取证与隐写

这是一段美妙的音乐,但是余音绕梁中,似乎又隐藏着些什么?

下载题目文件:ringtone

 

 

SHELLMAN

溢出利用

这里有一个 shellcode 管理程序,也许你可以管理更多?

下载题目文件:shellman, libc.so

连接服务器:

$ nc 119.254.101.197 10002

《“强网杯”网络安全挑战赛writeup》

 

漏洞利用

  • 四次菜单“2”,创建4个shellcode,内存中对应生产4个0x100大小的内存块区域。并将shellcode信息填充到起始地址为0x6016C0的内存中;
  • 菜单“3”,编辑第一个shellcode,发送超长”A”,覆盖相邻的堆块。
  • 菜单“4”,删除第二个shellcode,程序调用free函数释放堆块。在unlink过程中,将SCBlock[0]中的scaddr修改为0x6016c0;
  • 菜单“3”,编辑第一个shellcode,发送特殊字符串,将SCBlock[0]中的shellcode地址修改为0x601600,该地址对应got表中的free函数。
  • 菜单“1”,列出shellcode,从而读出free函数的地址。根据偏移计算system函数地址。
  • 菜单“3”,编辑第一个shellcode,发送包含system函数地址的特殊字符串,将got表中的free函数地址修改为system函数地址。
  • 菜单“4”,删除第三个shellcode,程序调用got表free函数,因上步free函数地址被system函数地址覆盖,实际执行system,取得shell。

最后flag为:flag{y0ur_f1rst_h3ap_0verflow}

 

SALT

密码

很多人都曾问我,知道多少明文和哈希后,就能算出 salt。做出这题你就知道答案。

文件下载:saltserver.py

连接服务器:

$ nc 119.254.101.197 10004

《“强网杯”网络安全挑战赛writeup》

 

FLAG-CHECKER

逆向

请输入 FLAG,下面的页面会告诉你 FLAG 是否正确。

下载题目文件:flag-checker.html

《“强网杯”网络安全挑战赛writeup》

  • 根据&&分隔表达式
    《“强网杯”网络安全挑战赛writeup》
  • 共得到48个等式,其中一个为length,47个判断字符串
  • a[0]==102
  • a[0]-a[1]==-6 得知 a[1]
  • a[2]+a[0]-a[1]==91 得知 a[2]
  • a[2]-a[1]-a[3]+a[0]==-12 得知 a[3]
  • 依此类推,解出a[0]到a[46]

Flag为:flag{wh47_my5ter10us-do3s,the+phe45ant/c0nta1n}

 

BROKEN

取证与隐写

我们找到一个可以启动的磁盘镜像,可是启动之后告诉我们 It's BROKEN!,怎么办?

下载题目文件:broken

《“强网杯”网络安全挑战赛writeup》

下载镜像文件后,无法打开。
使用hex看一下,发现是分区表损坏了,BOOT中没有BPB参数。
上网找了很多资料,终于还原了BOOT分区。

《“强网杯”网络安全挑战赛writeup》

还原了之后就可以直接加载img文件。
《“强网杯”网络安全挑战赛writeup》
磁盘中有一个flag文件,通过16进制查看,发现是张图片,但是少了png头,加上后图片就可以正常打开了。
对图片进行各种变换无果,后来发现删除图片文件后面的数据不影响图片显示,于是尝试修改图片分辨率,终于显示出了flag。
《“强网杯”网络安全挑战赛writeup》

 

俳句自动打分系统

Web渗透

最近全国上下都流行起了写俳句的风潮,我写了一个给俳句自动打分的系统,你要试试吗?把你的俳句保存在txt里提交给我就好啦。

服务器请访问 http://119.254.101.197:22231/13152f79f9264731da9fa16846449d80/index.php

《“强网杯”网络安全挑战赛writeup》

《“强网杯”网络安全挑战赛writeup》

猜测考上传截断 各种试了不行

nginx/1.4.6 (Ubuntu) nginx这个版本也试了 没解析漏洞

也确实发现存在xss 但是未果

扫到根目录robots文件

http://119.254.101.197:22231/13152f79f9264731da9fa16846449d80/robots.txt

Disallow:
/upload_paiju/*

得知自己上传的txt位置了

如:

index.php?page=view&id=IXNXy6QXUsfiqVDb

http://119.254.101.197:22231/13152f79f9264731da9fa16846449d80/upload_paiju/IXNXy6QXUsfiqVDb.txt

index.php?page=view&id=k0ysqS8UT6Jl0wTd

http://119.254.101.197:22231/13152f79f9264731da9fa16846449d80/upload_paiju/k0ysqS8UT6Jl0wTd.txt

 

有经验的小伙伴丢了一个连接

http://blog.ourren.com/2015/03/16/phar_include_exploit/

利用 Phar突破文件包含

 

Build_phar.php:

<?php class BuildPhar {
 private $_sourceDirectory = null;
 private $_stubFile = null;
 private $_outputDirectory = null;
 private $_pharFileName = null;
 /**
 *
 * @param 
 * @param 
 * @param 
 * @param $pharFileName string
 * // Name of your final *.phar file.

 */
 public function __construct($_sourceDirectory, $stubFile, $_outputDirectory = null, $pharFileName = 'myPhar.phar') {
 if ((file_exists ( $_sourceDirectory ) === false) || (is_dir ( $_sourceDirectory ) === false)) {
 throw new Exception ( 'No valid source directory given.' );
 }
 $this->_sourceDirectory = $_sourceDirectory;
 if (file_exists ( $this->_sourceDirectory . '/' . $stubFile ) === false) {
 throw new Exception ( 'Your given stub file doesn't exists.' );
 }
 $this->_stubFile = $stubFile;
 if (empty ( $pharFileName ) === true) {
 throw new Exception ( 'Your given output name for your phar-file is empty.' );
 }
 $this->_pharFileName = $pharFileName;
 if ((empty ( $_outputDirectory ) === true) || (file_exists ( $_outputDirectory ) === false) || (is_dir ( $_outputDirectory ) === false)) {
 if ($_outputDirectory !== null) {
 trigger_error ( 'Your output directory is invalid. We set the fallback to: "' . dirname ( __FILE__ ) . '".', E_USER_WARNING );
 }
 $this->_outputDirectory = dirname ( __FILE__ );
 } else {
 $this->_outputDirectory = $_outputDirectory;
 }
 $this->prepareBuildDirectory ();
 $this->buildPhar ();
 }
 private function prepareBuildDirectory() {
 if (preg_match ( '/.phar$/', $this->_pharFileName ) == FALSE) {
 $this->_pharFileName .= '.phar';
 }
 if (file_exists ( $this->_pharFileName ) === true) {
 unlink ( $this->_pharFileName );
 }
 }
 private function buildPhar() {
 $phar = new Phar ( $this->_outputDirectory . '/' . $this->_pharFileName );
 $phar->buildFromDirectory ( $this->_sourceDirectory );
 $phar->setDefaultStub ( $this->_stubFile );
 }
} // END
 // Class

if(isset($_GET['filename'])){
$filename
 // $filename.'.phar'
);
?>

《“强网杯”网络安全挑战赛writeup》

压缩后修改buili_phar.phptxt修改完成后上传文件,包含文件路径用 phar://{$PATH}/{$fileName}.{phar,txt}/{my.php}

《“强网杯”网络安全挑战赛writeup》

路径变动一下,然后访问
http://119.254.101.197:22231/13152f79f9264731da9fa16846449d80/index.php?page=phar://upload_paiju/Kq3hyYaRedV8aHck.txt/1&f=/srv/FLAG

Flag为:FLAG{wo_ceng_jing_kua_guo_shan_he_da_han,ye_chuan_guo_ren_shan_ren_hai}

 

DROIDMASTER

逆向

如果你无法运行这个安卓程序,那么一定是你的手机太老啦!

下载题目文件:droidmaster.apk

注:本题 flag 并非 flag{可见字符} 的形式。

《“强网杯”网络安全挑战赛writeup》

REPARTITION

取证与隐写

甲:我这儿有个工作,得存储大量数据,借个移动硬盘用一下?
乙:磁盘倒是有,不过存过秘密信息,不方便借啊。
甲:那盘里的数据还有用吗?
乙:主要就是一个压缩文件里面有敏感文件,已经做过备份,没什么用了。
甲:那好,你把它删了。
乙:哦,压缩口令存在另一个小文件里。
甲:直接拿个大文件覆盖一下呗。要是还不放心的话,把磁盘重新分一下区,再格式化一遍就保证没问题了。
乙:那好吧,照你说的做。

磁盘映像文件百度网盘下载链接: http://pan.baidu.com/s/1mgKfnDY 提取码: nshy

 

  • 将镜像写入物理磁盘,通过磁盘工具恢复分区表
  • 用winhex打开磁盘,在恢复之后的分区表2中找到pass目录
  • flag存储在secret.rar文件中
  • 通过MFT记录,找到相应信息
  • 获取汉字密码“梅花香自苦寒来”《“强网杯”网络安全挑战赛writeup》
  • 使用汉字密码解压rar文件,得到flag: flag{ch0n9x1n_f3n9u-fu_g41_yebu4nquan}

 

URLDECODER

溢出利用

这里有一个解码 URL 的程序,解码看看有没有漏洞?

下载题目文件: urldecoder, libc.so

连接服务器:

$ nc 119.254.101.197 10001
  • 程序对url中%后的字符没有是否为空的判断,触发栈溢出,控制函数返回地址
  • 构造特殊payload,发送超长字符串,覆盖返回地址为0x080488BC,计算获得system函数及字符串”/bin/sh”地址
  • 获取地址后,再次构造字符串,触发漏洞,覆盖函数返回地址为system地址。
  • 函数返回,执行system函数,获取”/bin/sh” shell。

Flag为:flag{r0p_is_so0o0_c00l!}

 

TWORSA

密码

听说有顶级黑客已经可以破解 RSA 了,我只好开发了一套加强版的双层 RSA 系统,用来加密邮件。

你能破解 email2 的明文吗?

文件下载:tworsa.zip

 

NESTING DOLL

取证与隐写

一切从 ruby 开始!

下载题目文件:doll.rb

 

根据doll.rb代码中最后的注释:Quine Relay,在github上找到同名项目:Quine Relay
根据提示,使用ubuntu虚拟机安装编译环境:

sudo apt-get install algol68g bash bf boo clisp clojure1.4 
  coffeescript f2c fp-compiler g++ gauche gawk gcc gforth gfortran ghc 
  gnat gnu-smalltalk gobjc golang groovy icont iconx intercal iverilog 
  jasmin-sable llvm lua5.2 make mono-devel mono-mcs nodejs ocaml octave 
  open-cobol openjdk-6-jdk parrot perl php5-cli pike7.8 python r-base 
  regina-rexx ruby2.0 scala swi-prolog tcl ucblogo valac

然后执行脚本:

ruby doll.rb > QR.scala
scalac QR.scala && CLASSPATH=. scala QR > QR.scm
gosh QR.scm > QR.bash
bash QR.bash > QR.st
gst QR.st > QR.tcl
tclsh QR.tcl > QR.unl
ruby unlambda.rb QR.unl > QR.vala
valac QR.vala && ./QR > QR.v
iverilog -o QR QR.v && ./QR -vcd-none > QR.ws
ruby whitespace.rb QR.ws > qr.adb
gnatmake qr.adb && ./qr > QR.a68
a68g QR.a68 > QR.awk
awk -f QR.awk > QR.boo
booi QR.boo > QR.bf
bf QR.bf > QR.c
gcc -o QR QR.c && ./QR > QR.cpp
g++ -o QR QR.cpp && ./QR > QR.cs
mcs QR.cs && mono QR.exe > QR.clj
clojure QR.clj > QR.cob
cobc -O2 -x QR.cob && ./QR > QR.coffee
coffee QR.coffee > QR.lisp
clisp QR.lisp > QR.fs
gforth QR.fs > QR.f
f2c QR.f && gcc -o QR QR.c -L/usr/lib -lf2c && ./QR > QR.f90
gfortran -o QR QR.f90 && ./QR > QR.go
go run QR.go > QR.groovy
groovy QR.groovy > QR.hs
ghc QR.hs && ./QR > QR.icn
icont -s QR.icn && ./QR > QR.i
ick -bfO QR.i && ./QR > QR.j
jasmin QR.j && CLASSPATH=. java QR > QR.java
javac QR.java && CLASSPATH=. java QR > QR.ll
llvm-as QR.ll && lli QR.bc > QR.logo
logo QR.logo > QR.lua
lua QR.lua > QR.makefile
make -f QR.makefile > QR.il
ilasm QR.il && mono QR.exe > QR.js
nodejs QR.js > QR.m
gcc -o QR QR.m && ./QR > QR.ml
ocaml QR.ml > QR.octave
octave -qf QR.octave > QR.pasm
parrot QR.pasm > QR.pas
fpc QR.pas && ./QR > QR.pl
perl QR.pl > QR.php
php QR.php > QR.pike
pike QR.pike > QR.prolog
swipl -q -t qr -f QR.prolog > QR.py
python QR.py > QR.R
R --slave < QR.R > QR.rexx
rexx ./QR.rexx > QR2.rb

最后得到一行ruby代码:

[26,20,31,25,5,9,27,79,29,80,19,27,83,12,80,83,12,24,77,83,9,17,14,79,28,83,80,26,83,15,11,79,18,27,3].map{|a| (128-a).chr}.join

print出来就可以得到答案:
flag{we1c0me-t0-th3-wor1d-0f-qu1ne}

 

IMDB

溢出利用

这里有最新最全的电影!如果你是黑客的话,也许你可以看到更多。

下载题目文件:imdb

连接服务器:

$ nc 119.254.101.197 10003

 

OLD FASHION 2

密码

古典密码的安全性确实不高,但是如果结合起来使用,强度也不小,请根据给出的加密解密程序,破译给出的密文。

下载题目文件:old-fashion-2.zip

注:本题 flag 并非 flag{可见字符} 的形式。

提示:key.num = 7

 

DOMINO

逆向

有一个输入可以得到正确答案,它到底是什么呢?

提示:正确输入的 md5 值以 f7b2dc4e 开头。

下载题目文件:domino

注:本题 flag 并非 flag{可见字符} 的形式。

 

域名数据库

溢出利用

域名服务器作为互联网的关键系统,其重要性不言而喻,一旦域名服务器存在漏洞,那么后果不堪设想。请测试下面的域名管理服务程序是否存在漏洞。

下载题目文件:domain_db libc.so

连接服务器:

$ nc 119.254.101.197 10006

TECH-BLOG

Web渗透

这里有一个很有趣的技术博客,一起看看吧。

服务器请访问 http://119.254.101.197:22233

转载自:http://www.secpulse.com/archives/32903.html

 

点赞