码迷,mamicode.com
首页 > 其他好文 > 详细

ISCC2016之旅

时间:2016-06-14 23:53:26      阅读:1380      评论:0      收藏:0      [点我收藏+]

标签:

0x00

  作为一个仰慕黑客技术已久的小白能有一个合法hack以及测试自己能力水平的地方一直是我梦寐以求的(特别是像我这种不怎么会搭环境的超级小白--),所以一听到ISCC2016的比赛消息,就屁颠屁颠的、迫不及待的去参赛了。

 

0x01

  ISCC比赛分为信息安全知识、basic、web、pwn、reverse、mobile、misc,我首先做的是信息安全知识题(why?因为是选择题,可以百度啊)。

  然后打算做web题,第一道web题是php的代码审计,开始一看到登陆框就一个劲的构造sql代码试图绕过登陆验证,结果弄了很久都没成功绕过,然后在伤心绝望之际看到下面有个查看源码......(经验不足真是悲剧,现在想想这种题就应该先仔细观察页面,收集信息的qwq)。

下面是源码

<html>
<head>
Masel‘s secure site
</head>
<body>

<a href="setup-db.php">閲嶇疆鏁版嵁搴?</a>

<?php
include("auth.php");
$servername = $host;
$username = $dbuser;
$password = $dbpass;
$database = $dbname;

error_reporting(0);
if($_POST["user"] && $_POST["pass"]) {
    $conn = mysqli_connect($servername, $username, $password, $database);
    if ($conn->connect_error) {
        die("Connection failed: " . mysqli_error($conn));
} 
$user = $_POST["user"];
$pass = $_POST["pass"];

$sql = "select user from user where pw=‘$pass‘";
//echo $sql;
$query = mysqli_query($conn,$sql);
if (!$query) {
    printf("Error: %s\n", mysqli_error($conn));
    exit();
}
$row = mysqli_fetch_array($query);
//echo $row["pw"];
if ($row[user]){
    if ($row[user] == "flag" && $user=="flag") {
        echo "<p>Logged in! Flag: ****************** </p>";
    }
    else{
        echo "<p>Password is right, but it‘s not for the flag </p>";
    }
}
else {
    echo("<p>Wrong password!</p>");    
  }
}

?>

根据$sql构造payload: ‘ or user=‘flag即可弹出flag。第一次独立做出web题的我当时还有点小激动,到处跟朋友炫耀,还发了说说--,现在觉得真的是too young too simple.

 

0x02

  接着想继续往下写web题,但是看了后面的题,连题目都看不懂了qwq,于是转换目标去做basic题了。

  basic题基本上都是与编码、加密相关的东西,一眼扫过去,看出了几题的解题思路。

  

  第一题,仿射加密,查查百度逆向算出公式然后代数字就得到了flag,逆函数为:m=(19c+4)mod26。

  第二题一看就是base64编码的东西,但是直接复制到firebug里面并不能直接解出flag,要把每行的换行符去掉才能丢进firebug里面解密,解四五次就得到了flag(刚开始被坑了,没注意到后面的换行符,然后一直想其他的加密算法,结果试了一圈经典加密都没得到flag,还是后来快结束的时候回去扫不会的题时才开窍试着把换行符去掉......然后就没有然后了)。

  第三题一看就知道去看源码,源码爆出了加密后的flag,这加密看着好眼熟但是不知道是什么加密,于是祭出了搜索神器——度娘,搜到的结果只有第一条有参考价值,但是当时并不懂什么叫字母变换(小白真心苦qwq),然后继续搜索字母变换,搜出了凯撒加密,于是在网上找了个穷举凯撒加密位移的代码跑出了一组明文,但是还是不知道哪个是flag,于是就搁置在那了。后来一起做题的小伙伴搜出了误发的writeup百度快照,然后后面的一串flag就都出来了......

  心灵鸡汤那题爆出的wp并没有,所以自己又开始埋头苦干。一开始弹出了个窗口,输入iscc并没什么东西,于是丢到od里面单步跟踪发现了加密的flag: DEath IS JUST A PaRT oF lIFE,sOMeTHInG wE‘RE aLL dESTInED TO dO.还是看不懂是什么加密类型,于是把自己知道的都试了一边,无果就搁置了。后来经学长提醒是培根加密,百度一下,根据大小写代换成01,然后对照密码表就得出了flag,用的是第一个密码表。

  其他的,加密文件那题用7z直接打开就能看到密文文件,然后拖出来,丢到百度一搜就得到flag了。jj那题把用jsfuck解码得到一个链接,下载文件后是一串JJEncode的代码(看wp知道的),然后下载解码器解码就好。解码器地址:https://github.com/jacobsoo/Decoder-JJEncode

 

0x03

  做完basic后转头来做web。

  double kill那题知道是两个漏洞联合起来拿flag,但是只知道一个是文件头解析绕过,另一个就不知道是什么,不过知道跟include有关,然后执行上传上去的图片文件就能拿到flag。比赛结束后经过学长指点,只需要在url里提交上传文件的相对路径就行,还有上传的图片里的php代码需要用<script language=php>...</script>这种类型(另一种asp的短标签需要开启支持,一般来说都是不行的,所以我就没试)。

  ping那题就是利用dos代码来爆目录。开始我并不知道有.txt的源码文件,就自己一个劲乱试,误打误撞的符合了他的正则然后就爆出了路径。路径下有一个假的md5编码的flag,刚开始不知道就重复试了好多次都不对,最后搁置QWQ。又是经过学长指点,开始dir下一个目录,然后再dir一下就得到了flag的文件路径,根据源码直接在url上提交相对路径就能爆出flag(话说都是include,为什么前面的题不知道丢到url里啊......)

  web500的题一看分值就已经放弃了一半,然后再看题目就完全放弃了——完全没有思路。赛后根据学长指点,需要用到代理,然后通过注册admin覆盖之前的记录,再连接木马就能得到flag。先是直接登陆admin,在报错页面的源码中有代理服务器的ip:121.42.171.222(刚开始也没注意,得到flag后再问学长才发现的:(),然后再代理一次就能正常显示登陆页面和注册页面了,注册页面的用户名需要绕过,payload: admin/*‘ ‘*/。然后审计robots的两个页面,将木马的源码粘贴到本地,然后删除session就能得到key:360,之后用firebug的post提交360=flag就得到了flag(理论上也可以本地搭建页面进行post提交,不过我嫌麻烦就没试......拖走o(>﹏<)o)。

 

0x04

  misc的第一题通过wireshark分析发现有传图片然后搜索flag就看到了。mp3的隐写题,当时我搜到了相关的隐写软件MP3Stego,但是想着应该不会那么简单就没去试。结果它真的就那么简单......用mp3stego解压mp3文件的密码在mp3的hex里,用记事本打开搜索iscc就找到了,解压得到一个文件后在base64解密一下就能拿到flag。

 

0x05

  通过这次ctf比赛,真的学到了不少东西,不过这篇文章是赛后大概半个月照着学长给的wp写的,所以不一定能重现当时的解题情景,就将就着看吧。总的来说,因为是第一次真心的投入ctf比赛,经验上着实缺乏,很多地方本来都差一步就拿到flag了,但就是差了那么点经验。还有比赛中真实的体验到自己的实战经验不足,今后需要多多“做”了。不过也有好的地方,比如坚持比完了(赛期一个月);坚持自己做,即使是拿到了误发的wp我也没有直接照搬,而是实在没办法了才去看看。

ISCC2016之旅

标签:

原文地址:http://www.cnblogs.com/ff0x00/p/5585803.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!