ISCC2016 WriteUp

时间:2022-10-11 07:46:04

日期: 2016-05-01~

注:隔了好久才发布这篇文章,还有两道Pwn的题没放,过一阵子放上。刚开始做这个题,后来恰巧赶上校内CTF比赛,就把重心放在了那个上面。

这是第一次做类似于CTF的题,在朋友的指点下做了一些简单的题目。记得上次去观摩0CTF&0Con得到的点拨:在每一次比赛结束后都要做总结。整理做出来的题目,理解没有做出来的题目。这样才会有所长进。因此打算在blog上开一个WriteUp。记下来搞定的,待未解出题有大牛放出WriteUp后,理解一下,并贴于此。

本次题目列表:

ISCC2016 WriteUp


下面按照题目顺序记录:

  • basic-1

ISCC2016 WriteUp

解题:

首先要知道原理。针对此题,仿射加密的逆过程应为:
找11的逆元(模26的群上),简单来说就是要找一个x,使得:
11 * x = 26 * k + 1
这里k是非负数。找到是19
设每个密文元素为c,对应明文元素为p,则:
p = (19 * (y - 8)) % 26
将字母用ASCII值代入计算即可。


  • basic-2

ISCC2016 WriteUp

解题:

一看这么长的编码,后边还带等号,基本可以确定是base64(注意,这方面的编码还有base32/base16等等)在网上找一个或者自己写一个解密脚本(python自带base64库)就好。由于脑洞不够大,我刚开始只是解了一次就把答案贴过去,不对。后来朋友说要多解几次。哎我怎么没想到呢!然后就解了快10次,最后出来了。


  • basic-3

ISCC2016 WriteUp

解题:

一般题目让你做什么你做什么就好。所以...点进去:

ISCC2016 WriteUp

是上图这个网页。然后猜到了要看网页源代码(幸亏之前学过HTML),于是:

ISCC2016 WriteUp

得到这个字符串:Jr1p0zr2VfPp
刚开始也不知道干嘛的,不过basic前两个都跟加密有关,这个说不定也是。就是不太肯定是什么加密方法。后来朋友提示(好吧我现在水平很菜:))说是移位密码。那就写脚本跑吧。注意一点,移位密码一般只是针对于字母表移位,而且题目也没有提示跟数字有关的内容,所以保持字符串中数字位置不动:

#!/usr/bin/python2.7

string = "Jr1p0zr2VfPp"

alpha1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
alpha2 = "abcdefghijklmnopqrstuvwxyz"
for i in range(0, 26):
    for x in string:
        if x in alpha1:
            print(alpha1[(alpha1.index(x)+i)%26]),
        elif x in alpha2:
            print(alpha2[(alpha2.index(x)+i)%26]),
        else:
            print(x),
    print

然后...自寻亮点吧。


  • basic-4

ISCC2016 WriteUp

解题:

下载附件后打开是个:

ISCC2016 WriteUp

不明所以,见到有个flag文件夹,使劲点,见文件夹就点,到最里边:

ISCC2016 WriteUp

但是这个图片正常打开不了,于是gedit打开:

ISCC2016 WriteUp

直接提交不对,百度了一下:

ISCC2016 WriteUp

Bingo~(后来朋友说这是栅栏密码)


  • basic-5

ISCC2016 WriteUp

解题:

附件下载打开后是个文本文件:

ISCC2016 WriteUp

百度后发现是一种javascript的奇怪编码(似乎可以绕过xss防御等等,可以再深究)
于是写一个html运行一下看看:(把奇怪编码放到script标签内容部分)

ISCC2016 WriteUp

浏览器打开后:

ISCC2016 WriteUp

所以嘞,下载文件吧,百度网盘~然后打开:

ISCC2016 WriteUp

(⊙o⊙)…比刚刚更奇怪。但是,注意文件名:JJ
Google一下JJ javascript....JJ 编码....JJ encode....(神通广大的朋友想到的),然后:

ISCC2016 WriteUp
ISCC2016 WriteUp

git clone.......

有个html,打开看看是个解码器,于是复制粘贴:

ISCC2016 WriteUp

之后我看到里边有个32位的字符串很可疑:

ISCC2016 WriteUp

找了个MD5解密网站,发现不行。于是直接交上去,竟然是flag!
后来朋友说这是JS混淆加密,于是又...

ISCC2016 WriteUp


  • Web-1

ISCC2016 WriteUp

点进去:

ISCC2016 WriteUp

点了下Source:

ISCC2016 WriteUp

解题:

根据题目说明,我们要登陆flag用户。这样就需要知道他的密码,题目说密码非常复杂。所以。。看源代码是个PHP+MySql

注意这里:
ISCC2016 WriteUp

没有过滤SQL语句,说明存在SQL注入了。再看它的逻辑:

ISCC2016 WriteUp

意思是说当你输入的用户名为flag,且人家数据库根据上面的SQL语句查出来的也是flag时候才登陆成功。
刚开始想用:

' or 1=1 or '

注入,但是这样事实上会把所有用户查出来,不符合人家结果,所以不正确

于是:

' or user='flag

这次OK:

ISCC2016 WriteUp


  • Misc-1

ISCC2016 WriteUp

数据包:

ISCC2016 WriteUp

打开(用wireshark):

ISCC2016 WriteUp

解题:

数据包是个局域网内SSDP服务请求包,看了半天没什么东西。于是在没思路的情况下,二进制打开吧,之前flag都是有很明显的flag标识告诉你这是flag的,所以,搜一下:

ISCC2016 WriteUp
ISCC2016 WriteUp

有戏,找到那个地方看看:

ISCC2016 WriteUp

提交时候记得把空格去掉。