SHCTF WP解析 个人博客godyu.com WP网页解析也会发到博客上
Web
题目截图
[WEEK1]生成你的邀请函吧~
本题两个工具都可以发送 工具1:插件Hackbar 工具2:postman
Hackbar我前面博客有介绍 这里用hackbar演示
解析如下:
1.F12打开hackbar
2.在给定的网址后面加入/generate_invitation 使用json 打开post 填入body部分
3.最后点击EXECUTE即可发送 发送后会获取到一个图片 图片下面就包含你的flag
提交大括号body里面的 name和QQ自行修改
{
"name": "Yourname",
"imgurl": "http://q.qlogo.cn/headimg_dl?dst_uin=QQnumb&spec=640&img_type=jpg"
}
====
[WEEK1]飞机大战
成绩不是99999999不让你过那就F12控制台改成绩即可
[WEEK2]EasyCMS
很老的一个系统,/admin/admin.php 账号admin 密码tao 这个就是建站的初始账号密码
在主页或者其他地址输入命令 主页比较简单拿到flag
[WEEK1]登录就给flag
本题用到kali linux系统 并且使用到kali工具中的BurpSuite 账号已经给了是admin
所以我们只需要爆破密码即可
浏览器FoxyProxy or proxy Switchomega插件配置代理127.0.0.1 在火狐浏览器也需要设置代理(
Burp配置一下代理
让后打开拦截按钮
先随便输入密码 肯定是错的 不过我们目的是为了抓包
点击登录 Burp就会弹出来 右键
load加载字典 或者复制 让后查看字节 那个字节不同 密码就是那个了
得到密码是password 如果前面是两个变量 需要选择鱼叉模式(也就是第三个进行爆破
这里已经知道账号是admin了 所以前面也可以设置一个变量(即密码 让后用狙击手模式爆破)
得到flag
tjj我喜欢你
[WEEK1]babyRCE
命令绕过WAF教程https://www.freebuf.com/articles/web/330736.html
cat flag即可 /?rce=c\at${IFS}/fl\ag 或者/?rce=c\at%09/fl\ag 拿下
[WEEK1]1zzphp
一个preg_math可以用数组绕过,第二个preg_match有递归限制,
这时候可以发送超长的垃圾数据去绕开这个preg_match 需要我们了解这些函数的用法
需要包括2023SHCTF 让后在加一个垃圾数据匹配他即可
这里直接用py 也可以通过转换uft-8用postman或者Hackbar
代码:
import requests
url='http://112.6.51.212:32426/?num[]=1'
data={
'c_ode':'G'*1020000+'2023SHCTF'
}
r=requests.post(url=url,data=data).text
print(r)
[WEEK2]ez_ssti
WEb SSTI解析https://blog.csdn.net/Jayjay___/article/details/132210050
?a=os&b=popen&c=cat /flag&name={{url_for.globals[request.args.a]request.args.b.read()}}
** Pwn
题目截图
[WEEK1]nc**
soeasy kali直接nc cat flag
[WEEK1]hard nc
ls -al 有个隐藏的.gift ,两个gift这就是其中一个咯 cat .gift
还有一个gift2 直接进入拿到flag base64解码两段拼接一下即可
Crypto
题目目录截图
[WEEK1]小兔子可爱捏
宇宙的终极答案是42(搜索引擎搜索
Rabbit 加密
U2FsdGVkX1/lKCKZm7Nw9xHLMrKHsbGQuFJU5QeUdASq3Ulcrcv9
工具https://www.sojson.com/encrypt_rabbit.html
[WEEK1]凯撒大帝
凯撒凯撒 那就是凯撒加密咯
凯撒解密工具https://www.lddgo.net/encrypt/caesar-cipher
flag{chutihaonan}
[WEEK1]进制
几层?两层 工具解密地址:https://www.toolhelper.cn/EncodeDecode/EncodeDecode
flag{ahfkjlhkah}
[WEEK1]okk
ook加密 解密地址:https://www.splitbrain.org/services/ook
flag{123456789}
[WEEK1]熊斐特
埃特巴什码加密
解密地址:http://www.hiencode.com/atbash.html
flag{atbash cipher}
[WEEK1]黑暗之歌
盲文加密 - base64(utf8)加密 -音符加密
工具地址https://www.toolhelper.cn/EncodeDecode/Base64EncodeDecode
⠴⡰⡭⡳⠴⡰⡭⡰⡷⡲⡢⡩⡭⡡⠯⡩⡭⡡⡺⡩⡭⡡⠳⡩⡭⡡⡺⡩⡭⡡⡶⡩⡭⡡⡶⡩⡭⡡⡲⡩⡭⡡⡺⡩⡭⡡⠯⡩⡧⡊⡢⡩⡭⡡⠯⡩⡭⡡⡺⡃⡰⠫⡋⡚⡲⡍⡋⡮⠴⡰⡭⡶⡷⡲⡢⡩⡧⡊⡢⡃⡴⡵⡋⡁⡬⡵⡋⡁⡬⡵⡋⡁⡬⡳⡋⠲⠴⡯⡃⡗⠴⡰⡭⡴⠴⡰⡭⡶⡷⡲⡢⡩⡧⡊⡢⡩⡭⡡⡺⡩⡭⡡⡺⡩⡭⡡⠳⡩⡧⡊⡢⡩⡭⡡⠯⡩⡧⡊⡢⡃⡴⡵⡋⡚⡱⠫⡋⡚⡱⠫⡋⡚⡲⠵⠲⡺⠰⠽ 盲文
4pms4pmpwrbima/imazima3imazimavimavimarimazima/igJbima/imazCp+KZrMKn4pmvwrbigJbCtuKAluKAluKAlsK24oCW4pmt4pmvwrbigJbimazimazima3igJbima/igJbCtuKZq+KZq+KZrz0=
♬♩¶♯♬♭♬♫♫♪♬♯‖♯♬§♬§♯¶‖¶‖‖‖¶‖♭♯¶‖♬♬♭‖♯‖¶♫♫♯=
flag{b2cc-9091-8a29}
[WEEK1]迷雾重重
给提示了是摩斯
解密工具地址https://www.lddgo.net/encrypt/morse
题目描述:
morse?ASCII?
密文:
0010 0100 01 110 1111011 11 111 010 000 0 001101 00 000 001101 0001 0 010 1011 001101 0010 001 10 1111101
换小写 那改编码规则即{ 得到 flag{morse_is_very_fun}
[WEEK1]难言的遗憾
清政府以前用的电报 解密工具https://www.qqxiuzi.cn/bianma/dianbao.php
密文:
000111310008133175592422205314327609650071810649
flag{一天不学高数我就魂身难受}
[WEEK1]what is m
bytes_to_long -那就long_to_bytes
代码
from Crypto.Util.number import *
flag = 此处填写m
print(long_to_bytes(flag))
flag{THERE_ArE_53V3RaI_AItern47IVES_7o_THe_10n9_to_BYtEs_FUNcti0n}
[WEEK1]really_ez_rsa
from Crypto.Util.number import getPrime, bytes_to_long
e = 65537 m = b''
p = getPrime(128) q = getPrime(128) n = p * q m = bytes_to_long(m) c = pow(m, e, n)
print("p =", p) print("q =", q) print("c =", c) print("e =", e)
from Crypto.Util.number import getPrime, bytes_to_long
e = 65537 m = b''
p = getPrime(128) q = getPrime(128) n = p * q m = bytes_to_long(m) c = pow(m, e, n)
print("p =", p) print("q =", q) print("c =", c) print("e =", e)
p = 217873395548207236847876059475581824463
q = 185617189161086060278518214521453878483 c = 6170206647205994850964798055359827998224330552323068751708721001188295410644
e = 65537
from sympy import mod_inverse
from Crypto.Util.number import *
p = 217873395548207236847876059475581824463
q = 185617189161086060278518214521453878483
e = 65537
Godyu = 6170206647205994850964798055359827998224330552323068751708721001188295410644
n = p * q
phi_n = (p - 1) * (q - 1)
d = mod_inverse(e, phi_n)
m = pow(Godyu, d, n)
print(long_to_bytes(m))
flag{Y0ung_meiyou_xiaojj} (这应该是私人恩怨吧hhh 竟然没有小jj
[WEEK1]Crypto_Checkin
QZZ|KQbjRRS8QZRQdCYwR4_DoQ7~jyO>0t4R4__aQZQ9|Rz+k_Q!r#mR90+NR4_4NR%>ipO>0s{R90|SQhHKhRz+k^S8Q5JS5|OUQZO}CQfp*dS8P&9R8>k?QZYthRz+k_O>0#>
base85 ascii标准 - base64 - base32 - hex_to_ascii
flag{Th1s_1s_B4s3_3nc0d3}
[WEEK1]残缺的md5
Py爆破 sbmd5 爆破三处
苑晴在路边捡到了一张纸条,上面有一串字符串:KCLWG?K8M9O3?DE?84S9 问号是被污染的部分,纸条的背面写着被污染的地方为大写字母,还给了这串字符串的md5码值:F0AF????B1F463????F7AE???B2AC4E6 请提交完整的md5码值并用flag{}包裹提交
import hashlib
import itertools
flag_string = "KCLWG?K8M9O3?DE?84S9"
flag_md5 = "F0AF????B1F463????F7AE???B2AC4E6"
def replace_placeholders(string, combination):
for char in combination:
string = string.replace("?", char, 1)
return string
def is_similar(hash1, hash2):
for c1, c2 in zip(hash1, hash2):
if c2 != "?" and c1 != c2:
return False
return True
for combination in itertools.product("ABCDEFGHIJKLMNOPQRSTUVWXYZ", repeat=flag_string.count("?")):
md5_hash = hashlib.md5(replace_placeholders(flag_string, combination).encode()).hexdigest().upper()
if is_similar(md5_hash, flag_md5):
print(f"flag{{{md5_hash}}}")
flag{F0AF1443B1F463EAFFF7AEBB8B2AC4E6}
[WEEK2]哈希猫
哈希猫把m分成了好几个哈希值,需要遍历自由组合
比较耗cpu..
flag{Y0u'V3_C0me_7o_uNderSt4nD_hASH_becEa6F16fee}
Misc
题目截图
[WEEK1]请对我使用社工吧
看右下角QQ 根据他的QQ收集信息-老家 山东东营-中国石油大学
[WEEK1]签到题
Wm14aFozdDBhR2x6WDJselgyWnNZV2Q5
两次base64解密
[WEEK2]远在天边近在眼前
就一压缩包自己填上即可 真近在眼前 补上即可 .. Pua我们新东西 ~
[WEEK1]message
0001000D91683106019196F40008C26211002072B975915730671B54114F60000A000A592982B15C065265843D8A938A00000A000A5E8A9AA453D883525730000A000A91527CBE518D6E1751656CEA75D5000A000A6C899ED852305BF94E0D8D77000A000A8FD94E0053CC624B535191195230002062B14F4F4F6000530048004300540046007B00620061003900370038003400300035002D0062003100630038002D0038003400370063002D0038006500360039002D006600360032003100370037006500340063003000380037007D
Pdu格式编码 工具地址https://www.diafaan.com/sms-tutorials/gsm-modem-tutorial/online-sms-pdu-decoder/
看到这个message我又想到了那句话(黑客有什么用?一天天忙的要死,连自己的爱人都留不住,但我下辈子我还学网安.
[WEEK1]可爱的派蒙捏
用到kali
得到两个旮旯长的txt文件 发现flag 步进2撸代码迭代
with open("C:\\Users\\godyu\\txt1.txt", "r", encoding="utf-8") as f1:
txt1 = f1.read()
with open("C:\\Users\\godyu\\txt2.txt", "r", encoding="utf-8") as f2:
txt2 = f2.read()
diff_str_complete = []
for char1, char2 in zip(txt1, txt2):
if char1 != char2:
diff_str_complete.append(char1)
diff_str_complete.append(char2)
diff_str_complete = ''.join(diff_str_complete)
print(diff_str_complete)
for i in range(1, len(diff_str_complete), 2):
print(diff_str_complete[i], end="")
flag{4ebf327905288fca947a}
Reverse
题目全部截图:
[WEEK1]easy_re
第一个easy_re 帮大家找到主函数 剩余的部分省略
首先我们需要下载ida 这里我用ida8.3最新版的分析
直接拖进ida
OK -YES shift+12 找地址
双击
找到flag前的format 标记 嗯X查地址 点OK
让后F5 进入主函数
找到主函数部分开始分析
注意:Re需要极高的C++基础 没有C++算法基础建议避开先去学C++
双击des找字节
找到这个字节 des高低位换回去
des = [
0x66, 0xC6, 0x16, 0x76, 0xB7, 0x45, 0x27, 0x97, 0xF5, 0x47,
0x03, 0xF5, 0x37, 0x03, 0xC6, 0x67, 0x33, 0xF5, 0x47, 0x86,
0x56, 0xF5, 0x26, 0x96, 0xE6, 0x16, 0x27, 0x97, 0xF5, 0x07,
0x27, 0x03, 0x26, 0xC6, 0x33, 0xD6, 0xD7, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00
]
def convert(byte):
l , h = byte & 0x0F , byte & 0xF0
reversed_byte = (l << 4) | (h >> 4) # 交换高低位
return chr(reversed_byte)
flag = ''.join([convert(byte) for byte in des if byte != 0x00])
print(flag)
[WEEK1]seed
[WEEK1]seed
[WEEK1]easy_math
[WEEK1]signin
没东西找到主函数
flag{flag1sinarray}
[WEEK1]ez_asm
置反
flag = "nhuo[M`7mc7uhc$7midgbTf`7`$7%#ubf7 ci5Y"
decoded_flag = ""
for char in flag:
decoded_byte = chr((ord(char) + 0x0A) ^ 0x1E)
decoded_flag += decoded_byte
print(decoded_flag)
[WEEK3]easyre
运行即可得到flag