前沿:刚刚结束了NJCTF,做出来的题目很少。

1,----非常简单的misc , check QQ ,直接在QQ群可以看到发布的flag.

2,konck----hint:韩琛截获了一张纸条,突然记起来记录到房间里有人敲桌子,先下载附件,我们解压可以看到两个txt文件夹,刚看到这个题目的时候,受到题目的影响,以为是摩斯密码,后来试了好几遍都失败了,所以不是摩斯密码,后来又对比着看,发现这个一个txt文件(...._....._.._...._..._....._...._..._..._...._...._......._._...._....._.._...._..._..._...._...._..._..._...._.._..._......._..................

)中的.和另一个txt文件(zjqzhexjzmooqrssaidaiynlebnzjovosltahzjerhorrqxoeironlobdozavoouzjovosqfqsltahmqnqrrjotoerzjohorrqxoebooqydrztyqqojolx

)中的字母是一样的,试着替换了一下,结果是:zjqz_hexjz_mo_oqrs_sai_daiyn_lebn_zjo_vos_ltah_zjer_horrqxo_e_iron_lobdo_za_voou_zjo_vos_qfqs_ltah_mqn_qrr_joto_er_zjo_horrqxo_ebooqydrztyqqojolx然后在线解密(http://quipqiup.com/)得到:that_ might_ be_ easy_ you_ could_ find_ the_ key_ from_ this_ message_ i_ used_ fence_ to_ keep_ the_ key_ away_ from_ bad_ as s_here_ is_ the_ message_ in e e alcs tr laaeh e f g,然后意思是说key在这段话里面,感觉是后面的,然后把后面的空格去掉,试了好几次,证明后面十八位然后栅栏密码得到下面图所示:然后提交即可。

3,login----我首先登陆了进去,然后看到admin才能get the flag ,因为我不是admin,所以失败,然后想到用mysql数据库的数据类型长度截断的性质,如果数据超过了长度会被截断,所以注册的时候可以这样构造:admin                                 a,中间一大串空格,然后再登陆,登陆的时候直接用admin登陆就行了,然后输入刚刚注册时候的密码,进去之后就得到了flag。

4,getflag----这个题是文件读取,使用Linux命令,我们可以构造语句,我们输入xxx%26ls ../../,这里的xxx是胡乱输的,%26是&,用&链接命令,但是&不行,所以转一下%26,ls是linux下的指令,ls ../把网站目录向上走,然后源码是base64,解密就行了,输入xxx%26ls ../../结果可以看到flag文件,用cat读文件就得到flag了。

5,Wallet (这个题得到了P师傅的循循教导,不然可能做不出来)----首先把网站扫了一下,结果扫出来个www.zip压缩包,但是加密了,官方提示密码是弱口令,试了好几遍,后来njctf2017成功了,里面是admin.php,打开之后是乱码,然后找个网站解了一下密(http://tool.lu/php/用phpjm解密),得到了admin.php的php代码,首先我们分析一下,

if ($auth)                                         
    {                                                  
        if(isset($_GET['query']))

我们首先得让$auth等于1,那么我们看上面,

else if (sha1((string)$hsh) == md5((string)$auth))
        {
            $auth = 1;
        }

所以我们知道sha1((string)$hsh和md5((string)$auth相等的时候才能让$auth = 1;这个是==(  ===是恒等计算符   同时检查表达式的值与类型

==是比较运算符号  不会检查条件式的表达式的类型   ),不是绝对等于,相关知识不会的百度,所以我们需要找相关的字符串,往上面都有,我找了两个,其中s878926199a    md5后是0e545993274517709034328855841020,10932435112  sha1加密后是0e07766915004133176347055865026311692244(详情请看我上一篇0e开头MD5值小结),所以这两个就可以绕过if ($auth) ,接下来是query,$_GET['query'],看代码队伍说感觉是注入,首先我们先下载cookie管理器(火狐,这里我用bp没整出来flag你们可以试试,整出来了麻烦给我留言,谢谢),把题目的地址Refresh,然后收到cookie,我们把收到的auth和hsh都换成对应的s878926199a和10932435112,然后我们去注入,我们在admin.php后面输入 ?query=1,结果显示数字,所以存在注入,我们用union注,我刚开始猜的是flag,所以我刚开始输入了?query=1 and 1=2 union select flag from flag(注意这个后面不需要加#,用了反而会出错),结果是错误的,后来我又试了id,输入?query=1 and 1=2 union select id from flag结果flag出现了,这里我就不多说了,你们可以按照常规的来,当然就是你们的事情了,任重而道远。

6,这个是队友做出来的,下面的是  easy_crypto  的writeup。
easy_crypto的附件是一个压缩包。包中有四个文件,Cipher.txt encrypt.c flag.txt plain.txt。其中Cipher.txt是plain.txt加密后的文件。
加密算法是encrypt.c。而flag.txt是明文加密后的文件,只要我们解密出来这个文件即可得出flag。
下面给出加密算法:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
if (argc != 3)
{
printf("USAGE: %s input_file output_file\n", argv[0]);
return 0;
}
FILE* input_file = fopen(argv[1], "rb");
FILE* output_file = fopen(argv[2], "wb");
if (!input_file || !output_file)
{
printf("Error\n");
return 0;
}
char key[] = "XXXXXXXXXXXX";
char p, t, c = 0;
int i = 0;
while ((p = fgetc(input_file)) != EOF)
{ c = ((key[i % strlen(key)] ^ t) + (p-t) + i*i ) & 0xff;
t = p;
i++;
fputc(c, output_file);
}
return 0;
}

但是观察得出key不知道是多少?这时候,题目给的Cipher.txt ,plain.txt就起到作用了,通过这两个文件来得出key。
下面给出代码。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include<iostream>
using namespace std; int main()
{
FILE* input_file = fopen("plain.txt", "rb");
FILE* output_file = fopen("cipher.txt", "rb");
char key[100];
char p, t, c = 0;
int i = 0;
while ((p = fgetc(input_file)) != EOF&&(c = fgetc(output_file))!=EOF)
{
key[i]=(c -((p-t) + i*i ))^t;
t = p;
i++;
}
cout<<key<<endl;
return 0;
}

字符串如下:
OKIWILLLETYOUKNOWWHATTHEKEYIS
OKIWILLLETYOUKNOWWHATTHEKEYIS
OKIWILLLETYOUKNOWWHATTHEKEYIS
OKIW
从这上面我们可以得出:
key数组就是OKIWILLLETYOUKNOWWHATTHEKEYIS。
得到key之后,我们就要解密密文,还要写出算法:

#pragma once
#pragma execution_character_set("utf-8")
#include <stdlib.h>
#include<ctype.h>
#include <stdio.h>
#include <cstring>
#include<iostream>
using namespace std; int main()
{
FILE* input_file = fopen("flag.txt", "rb");
char key[] = "OKIWILLLETYOUKNOWWHATTHEKEYIS";
char flag[100] = "";
char p,t,c;
p = t = c = 0;
int i = 0;
while ((c = fgetc(input_file)) != EOF)
{
p = c - i*i + t - (key[i % strlen(key)] ^ t);
flag[i] = p;
t = p;
i++;
}
cout << flag << endl;
return 0;
}

于是Flag:NJCTF{N0w_You90t_Th1sC4s3}。

上面就是所以做出来的题目,任重而道远,还需要更加努力!

NJCTF 极少部分wp的更多相关文章

  1. WaitForSingleObject与WaitForMultipleObjects用法详解(好用,而且进入一个非常高效沉睡状态,只占用极少的CPU时间片)

    在多线程下面,有时候会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects ...

  2. 莫队初探(不带修/例题极少)By cellur925

    因为今天考到莫队裸题了嘤嘤嘤...而我这样的蒟蒻肯定不会这样的高端算法啊QAQ.于是暴力水了40分qwq. 正如上文所说,我实在太菜了,于是学习莫队也只是学习了最简单的不带修普通莫队,如果我能苟到省选 ...

  3. ajax异步提交 有时会出现无bug的数据处理异常-----debug没有问题,正常运行却数据处理不正确,极少机会会出现正常的处理结果

    ajax  被使用时,常默认的就使用了异步处理. 当遇到后面的代码对同样的数据进行处理 或 要依赖前面ajax处理的结果时,就会导致数据处理结果不正确,未达到预期值. 且,debug时却能正常完成功能 ...

  4. 前端上将字符串用语音读出来只能在IE上运行 其他不行 代码极少

    先保存保存自己的笔记 有高手看到求指点 <script type="text/javascript"> var VoiceObj; try { VoiceObj = n ...

  5. 谷歌扩展程序设置ajax请求允许跨域(极少人知道的解决方案)

    前言: 跨域问题一直是个老生常谈的问题,在实际开发过程中,跨域的问题常常会让开发者非常的头疼. 常用的几种跨域解决方案: 1.代理 2.XHR2 HTML5中提供的XMLHTTPREQUEST Lev ...

  6. Dynamics 365中显示格式为URL的字段极少部分URL值录入了不显示怎么回事?

    微软动态CRM专家罗勇 ,回复318或者20190315可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 对于如下类型的字段, ...

  7. Telegram传奇:俄罗斯富豪、黑客高手、极权和阴谋…

    说了很久要写Telegram的故事,一直拖延没有写.在我拖延的这段时间里面,Telegarm继续快速增长,前几天,在旧金山的TechCrunch Disrupt活动上,创始人Durov说现在Teleg ...

  8. 国产CPU走到十字路口:谁来取代英特尔芯片?(少写了一个OpenPower)

    国内的几支CPU研发力量各自选择的指令体系都有自己的优点和问题,选择其中的哪一支都会有对应的成本和风险.最终谁能担大任,且拭目以待. 文 | 瞭望智库特约科技观察员 王强 用上内置国产CPU的个人电脑 ...

  9. 极简的Android RecyclerView Adapter(使用DataBinding)

    阅读本篇文章需要读者对Android Databinding和RecyclerView有一定的了解. 简介 我们知道,DataBinding的核心理念是数据驱动.数据驱动驱动的目标就是View,使用D ...

随机推荐

  1. Hudson + SVN + Maven 持续集成实现自动化编译、打包、部署(over SSH 和 Deploy war/ear to a container 两种部署方式)

    下载hudson ,安装部署http://hudson-ci.org/ 将下载的hudson-3.3.3.war放到tomcat的webapps目录下并启动tomcat,输入地址访问 点击Instal ...

  2. Windows 10 快捷键汇总表格

    Windows 10 快捷键汇总表格 Windows 10 快捷键汇总 Win键 + Tab 激活任务视图 Win键 + A 激活操作中心 Win键 + C 通过语音激活Cortana Win键 + ...

  3. linux命令综合

    查找文件中指定字符串并且高亮显示: find .|xargs grep --color=auto "hello" dos下查找: netstat -ano|findstr &quo ...

  4. 下载MySQL历史版本

    下载MySQL历史版本 地址:http://downloads.mysql.com/archives/community/

  5. java 入门之八大内置基本类型

    本文采用eclipse 工具演示,如果您对eclipse 工具不了解,请先学习下 eclipse 工具的使用,这个里面只是简单的介绍下输出和注释: 安装完成eclipse 以后,双击进入 后一次点击 ...

  6. 直方图均衡化C++实现

    直方图均衡化在图像增强方面有着很重要的应用.一些拍摄得到的图片,我们从其直方图可以看出,它的分布是集中于某些灰度区间,这导致人在视觉上感觉这张图的对比度不高.所以,对于这类图像,我们可以通过直方图均衡 ...

  7. Establish the LAMP (Linux+Apache+MySQL+PHP) Development Environment on Ubuntu 14.04 Operating System

    ######################################################## Step One: Update the software package in yo ...

  8. 学习笔记 intent属性

    Android开发学习笔记:Intent的简介以及属性的详解 2011-08-08 17:20:48 标签:Intent 移动开发 Android 休闲 详解 原创作品,允许转载,转载时请务必以超链接 ...

  9. Vim 神器的打造方式

    Vim 神器的打造方式     [字体:大 中 小]   Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注意事项,以及持续分享一个前端工作者不得不安装的一些插 ...

  10. 通过对DAO层的封装减少数据库操作的代码量

     在学框架之前,写项目时总是要花大量的时间去写数据库操作层代码,这样会大大降低我们的效率,为了解决这个问题,我花了两天时间利用反射机制和泛型将DAO层进行了封装,这样我们只需要写sql语句,不需要再写 ...