前沿:刚刚结束了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. js实现微信朋友圈模糊图片功能

    本人第一次写文章 ,写的不好大家就凑合着看吧. 界面的简单效果. 主要html如下 <div id="content"> <!--模糊图片--> <i ...

  2. win10 uwp 获取指定的文件 AQS

    很多时候不需要获取整个文件夹的文件,是需要获取文件夹里指定的文件. 那么 UWP 如何对文件夹里的文件进行过滤,只拿出自己需要的文件? 本文:如何使用通配符或文件匹配方式在uwp获取文件夹中指定的文件 ...

  3. PHP 单例模式解析和实战

    一.什么是单例模式? 1.含义 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例.它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用. 2. ...

  4. 关闭 Activity 关闭方式 finish(), exit(), killProcess(), restartPackage()(转载)

    finish():结束当前 Activity,不会立即释放内存.遵循 android 内存管理机制.exit():结束当前组件如 Activity,并立即释放当前 Activity 所占资源.kill ...

  5. 深入Javascript之this

    前言 近期准备好好的读一读<你不知道的JavaScript(上卷)>这本书,俗话说的好,好记性不如烂笔头,读到this这章感觉是时候需要一些笔记了.文中如有错误之处,欢迎指出. 什么是th ...

  6. Windows Server 2008通过计划任务定时执行bat文件

    前段时间在Windows Server 2008安装了一套基于MySQL数据库的软件,处于数据安全的考虑,希望每天能够自动进行数据库备份.我在别人脚本的基础上自己写了一个数据库备份的bat脚本,双击该 ...

  7. C GOTO使用示例

    GOTO虽然会破坏程序的结构,使用代码可读性变差,但是GOTO依然还是有可用的地方 #include <stdio.h>#include <stdbool.h> int mai ...

  8. 【ASP.NET MVC 学习笔记】- 01 理解MVC模式

    本文参考:http://www.cnblogs.com/willick/p/3195560.html 1.MVC模式是软件系统的一种架构模式,它将软件分为三大模块: 模型(Model):封装业务逻辑以 ...

  9. OpenCV4Android

    前文曾详细探讨了关于OpenCV的使用,原本以为天下已太平.但不断有人反应依然配不好OpenCV4Android,不能得心应手的在Android上使用OpenCV,大量的精力都浪费在摸索配置上.尤其是 ...

  10. 我的第一个python web开发框架(15)——公司介绍编辑功能

    完成登录以后,就会进入后台管理系统的主界面,因为这个是小项目,所以导航菜单全部固化在HTML中,不能修改.一般后台还会有一个欢迎页或关键数据展示的主页面,小项目也没有多大的必要,所以登录后直接进入公司 ...