ISCC 2018做题记录

前言

感觉自己好菜,只会做几个题目,而且打打停停,还要应付各种考试,忙不过来,以后还是要更加努力学习啊。。还是先记录一下自己的做题过程,慢慢进步,跟不上大佬们的步伐啊emmm。。

MISC

What is that?

直接改图片高度就好
CfUge0.png
得到flag
CfURoT.png

秘密电报

打开文件发现是一堆AB立刻想到是培根密码,直接培根解密得到flag,注意最后提交的是大写

重重谍影

发现一段base64编码。不断base64解码,注意期间还要URL编码,这就有点麻烦了,当你base64解码不行的时候,尝试一下AES解密,这里key为空,解密网址 http://tool.oschina.net/encrypt/
得到下面的东西
答案就是后面这句但已加密

1
缽娑遠呐者若奢顛悉呐集梵提梵蒙夢怯倒耶哆般究有栗

这里有点脑洞了,我之前不知道有这种东西,叫与佛论禅
解密网址 http://www.keyfc.net/bbs/tools/tudoucode.aspx
解密后得到flag

Where is the FLAG?

这个题目一开始用HXD打开发现里面存在某款软件的文件名
CfUISJ.png

于是立即下载使用该软件打开这张图片,发现下面有多个图层,是一张二维码,直接拼接扫描即可
CfUol9.png

秘密电报

直接十六进制解码即可

凯撒十三世

根据题目应该是凯撒密码位移13位也就是rot13,然后就是脑洞题目了,键盘密码,每一位都是对应键盘的下一行,直接出来flag

一只猫的心思

这个题目也很厉害,我弄了很久,但是里面也有与佛论禅。。。。
先是在HXD里面找到了office的踪迹,于是我手动提取出来,可能别的大佬有更好的方法
CfU7O1.png
然后打开
CfUqw6.png
又是与佛论禅,出题人是有多喜欢。。。
解出来发现是一堆16进制,房间converter里面解码
得到一堆base64,再解一下就是base32,再解一下16进制,就是这样一直解下去就好

暴力XX不可取

这道题目考了一个zip包的伪加密,然后直接凯撒解密就好。。。很简单

web

比较数字大小

直接改前端代码就好,改大一点
CfUjYD.png
然后输入数字,得到flag

本地的诱惑

这题很简单,直接改xff为127.0.0.1即可

你能跨过去吗?

打开发现一段类似base64的东西,首先要把这东西url编码之后再解base64,发现一段以+开头以-结尾的编码,utf7编码,给个解码网址 http://toolswebtop.com/text/process/decode/utf-7

得到 <script>alert("key:/%nsfocusXSStest%/")</script>
/%nsfocusXSStest%/提交到文本框里就可以得到flag了

你能绕过吗?

这个题目考的是文件包含漏洞,利用f参数读取,根据f参数猜测后台为include(‘文件名’.’php’) ,尝试用伪协议把源码读出来,但题目说了要绕过,肯定不简单
这里我们用大写去绕过,读取index.php
http://118.190.152.202:8008/index.php?f=PHP://filter/read=convert.base64-encode/resource=index&id=2
得到一串base64,解码之后得到flag

web02

改一下Client-ip:127.0.0.1 发包就得到flag

一切都是套路

这个题是代码审计题目,源码在index.php.txt 里面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
include "flag.php";
if ($_SERVER["REQUEST_METHOD"] != "POST")
die("flag is here");
if (!isset($_POST["flag"]) )
die($_403);
foreach ($_GET as $k => $v){
$$k = $$v;
}
foreach ($_POST as $k => $v){
$$k = $v;
}
if ( $_POST["flag"] !== $flag )
die($_403);
echo "flag: ". $flag . "\n";
die($_200);
?>

一开始这一题还是懵,不知道flag究竟放在哪个变量里面,经过提示是在$flag里面,有确定的目标就很好做了
发现代码里面有两个$,利用了变量覆盖把flag参数里面的内容改掉,然后最后利用die函数把flag里面的内容打印出来
我们得先获得$flag变量里面的内容,我们可以利用get的变量覆盖把里面的内容赋值到$_200这一个变量里面,这样就可以充分利用die这一个函数了
然后下面紧接着一个post的变量覆盖还有一个post的判断,但是此时我们并不知道$flag 里面的内容,我们只能利用变量覆盖改变$flag里面的内容,这也说明了$flag这个变量是可控的。。我们可以随意的修改并且绕过判断,这样我们就可以得到flag了
payload:
get数据

1
http://118.190.152.202:8009?_200=flag

post数据

1
flag=1

php是世界上最好的语言

首先进去第一关是MD5弱类型比较,直接找一个QNKCDZO代入就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php 
header("content-type:text/html;charset=utf-8");
if(isset($_POST['username'])&isset($_POST['password'])){
$username = $_POST['username'];
$password = $_POST['password'];
}
else{
$username="hello";
$password="hello";
}
if(md5($password) == 0){
echo "xxxxx";
}


show_source(__FILE__);
?>

第二关发现两个$,于是尝试一波GLOBALS全局变量,get一个a=GLOBALS 直接出flag

1
2
3
4
5
6
7
8
9
<?php 
include 'flag.php';
$a = @$_REQUEST['a'];
str_replace("{","",$a);
str_replace("}","",$a);
@eval("var_dump($$a);");
show_source(__FILE__);

?>

CfaFTf.png

请ping我的ip 看你能Ping通吗?

非预期解
直接上御剑扫描目录发现有flag.txt访问即可

预期解
好像是利用ping参数去执行各种命令,用%0a去绕过好像。。。没有详细去尝试

Please give me username and password!

这也是个代码审计的题目,题目隐藏在index.php.txt里面,发现出题人很喜欢把源代码放在这个文件里面啊

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
error_reporting(0);
$flag = "***********";
if(isset($_GET['username'])){
if (0 == strcasecmp($flag,$_GET['username'])){
$a = fla;
echo "very good!Username is right";
}
else{
print 'Username is not right<!--index.php.txt-->';}
}else
print 'Please give me username or password!';
if (isset($_GET['password'])){
if (is_numeric($_GET['password'])){
if (strlen($_GET['password']) < 4){
if ($_GET['password'] > 999){
$b = g;
print '<p>very good!Password is right</p>';
}else
print '<p>Password too little</p>';
}else
print '<p>Password too long</p>';
}else
print '<p>Password is not numeric</p>';
}
if ($a.$b == "flag")
print $flag;
?>

一个很简单的绕过,只是组合这来考查数据的表示方法绕过还有数组绕过

首先这个函数strcasecmp出现在==后面,一旦==出现我们就要警惕了,这里我们可以使这个函数报错然后使之满足弱类型0 == false这样就绕过了第一个判断,使$a=fla,这是为了使后面的
if ($a.$b == "flag"),然后在审计下面的password部分,password的部分其实就是一个典型的数字绕过的代码审计题目,我们可以选择用科学计数法去绕过,这里我用的是9e9,所以我最后的payload为

1
http://118.190.152.202:8017/?username[]=123&password=9e9

为什么这么简单啊

这一题根据题目给的提示把referer还有各种有关ip的参数都改掉发包发现一个奇怪的地址
CfaPmt.png
打开地址的源代码发现有一段奇怪的base64
CfaVfg.png
解码发现

1
<script>alert("password:xinyiji.com")</script>

这个就是密码,输入就得到flag

RE

RSA256

这个题完全考的不是逆向,完完全全的密码学RSA
打开发现一个公钥文件
用OpenSSL打开公钥文件得到他的模数n,于是去factordb.com分解一波模数
得到p和q
然后常规操作得到秘钥d
然后用rsa-tool得到秘钥文件,又重新用openssl以一个解密就好

1
2
3
openssl rsautl -decrypt -in encrypted.message1 -inkey key.pem -out flag.txt
openssl rsautl -decrypt -in encrypted.message2 -inkey key.pem -out flag2.txt
openssl rsautl -decrypt -in encrypted.message3 -inkey key.pem -out flag3.txt

我们把文件重定向以后就得到flag
Cfan6s.png

最后在此求一波大佬的wp学习啊。。。。。


听说,打赏我的人最后都成了大佬。



文章目录
  1. 1. 前言
  2. 2. MISC
    1. 2.1. What is that?
    2. 2.2. 秘密电报
    3. 2.3. 重重谍影
    4. 2.4. Where is the FLAG?
    5. 2.5. 秘密电报
    6. 2.6. 凯撒十三世
    7. 2.7. 一只猫的心思
    8. 2.8. 暴力XX不可取
  3. 3. web
    1. 3.1. 比较数字大小
    2. 3.2. 本地的诱惑
    3. 3.3. 你能跨过去吗?
    4. 3.4. 你能绕过吗?
    5. 3.5. web02
    6. 3.6. 一切都是套路
    7. 3.7. php是世界上最好的语言
    8. 3.8. 请ping我的ip 看你能Ping通吗?
    9. 3.9. Please give me username and password!
    10. 3.10. 为什么这么简单啊
  4. 4. RE
    1. 4.1. RSA256