NJCTF 极少部分wp
前沿:刚刚结束了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,然后我们去注入,我们在后面输入 ?query=1,结果显示数字,所以存在注入,我们用union注,我刚开始猜的是flag,所以我刚开始输入了?query=1 and 1=2 union select flag from flag(注意这个后面不需要加#,用了反而会出错),结果是错误的,后来我又试了id,输入admin.php结果flag出现了,这里我就不多说了,你们可以按照常规的来,当然就是你们的事情了,任重而道远。 ?query=1 and 1=2 union select id from 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的更多相关文章
- WaitForSingleObject与WaitForMultipleObjects用法详解(好用,而且进入一个非常高效沉睡状态,只占用极少的CPU时间片)
在多线程下面,有时候会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleObjects ...
- 莫队初探(不带修/例题极少)By cellur925
因为今天考到莫队裸题了嘤嘤嘤...而我这样的蒟蒻肯定不会这样的高端算法啊QAQ.于是暴力水了40分qwq. 正如上文所说,我实在太菜了,于是学习莫队也只是学习了最简单的不带修普通莫队,如果我能苟到省选 ...
- ajax异步提交 有时会出现无bug的数据处理异常-----debug没有问题,正常运行却数据处理不正确,极少机会会出现正常的处理结果
ajax 被使用时,常默认的就使用了异步处理. 当遇到后面的代码对同样的数据进行处理 或 要依赖前面ajax处理的结果时,就会导致数据处理结果不正确,未达到预期值. 且,debug时却能正常完成功能 ...
- 前端上将字符串用语音读出来只能在IE上运行 其他不行 代码极少
先保存保存自己的笔记 有高手看到求指点 <script type="text/javascript"> var VoiceObj; try { VoiceObj = n ...
- 谷歌扩展程序设置ajax请求允许跨域(极少人知道的解决方案)
前言: 跨域问题一直是个老生常谈的问题,在实际开发过程中,跨域的问题常常会让开发者非常的头疼. 常用的几种跨域解决方案: 1.代理 2.XHR2 HTML5中提供的XMLHTTPREQUEST Lev ...
- Dynamics 365中显示格式为URL的字段极少部分URL值录入了不显示怎么回事?
微软动态CRM专家罗勇 ,回复318或者20190315可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 对于如下类型的字段, ...
- Telegram传奇:俄罗斯富豪、黑客高手、极权和阴谋…
说了很久要写Telegram的故事,一直拖延没有写.在我拖延的这段时间里面,Telegarm继续快速增长,前几天,在旧金山的TechCrunch Disrupt活动上,创始人Durov说现在Teleg ...
- 国产CPU走到十字路口:谁来取代英特尔芯片?(少写了一个OpenPower)
国内的几支CPU研发力量各自选择的指令体系都有自己的优点和问题,选择其中的哪一支都会有对应的成本和风险.最终谁能担大任,且拭目以待. 文 | 瞭望智库特约科技观察员 王强 用上内置国产CPU的个人电脑 ...
- 极简的Android RecyclerView Adapter(使用DataBinding)
阅读本篇文章需要读者对Android Databinding和RecyclerView有一定的了解. 简介 我们知道,DataBinding的核心理念是数据驱动.数据驱动驱动的目标就是View,使用D ...
随机推荐
- Java策略模式以及来自lambda的优化
前言 设计模式是软件工程中一些问题的统一解决方案的模型,它的出现是为了解决一些普遍存在的,却不能被语言特性直接解决的问题,随着软件工程的发展,设计模式也会不断的进行更新,本文介绍的是经典设计模式 ...
- mybatis的搭建和注入spring的方式
mybatis实际上是一个更多关注sql语句的框架,他的出现是想让开发者更简单的去操作数据库. 与hibernate相比较,hibernate更多的是去sql化,虽然hibernate也可以本地sql ...
- HTML5之window.applicationCache对象
不知道离线缓存技术的可以参照上一篇文章: HTML5之appcache语法理解/HTML5应用程序缓存/manifest缓存文件官方用法翻译 参考文章 window.applicationCache ...
- (转)UML类图与类的关系详解
转载自:http://www.uml.org.cn/oobject/201104212.asp 在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Rea ...
- ssh更改默认端口号及实现免密码远程登陆
近来在复习防火墙管理工具 iptables 的基本使用方法,涉及到对端口添加或删除防火墙策略的内容,之前对ssh更改默认端口号及免密码登录的方法不熟悉,这次做一个基本的总结防止自己遗忘. 错误偏差及其 ...
- 使用PHPExcel-1.8实现导入
//使用PHPExcel-1.8实现导入(下载PHPExcel-1.8):导入excel 后缀名必须是.xls1.<form method="post" action=&qu ...
- 1016: [JSOI2008]最小生成树计数
1016: [JSOI2008]最小生成树计数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 6200 Solved: 2518[Submit][St ...
- Paint the Grid Reloaded(缩点,DFS+BFS)
Leo has a grid with N rows and M columns. All cells are painted with either black or white initially ...
- Java IO编程全解(三)——伪异步IO编程
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7723174.html 前面讲到:Java IO编程全解(二)--传统的BIO编程 为了解决同步阻塞I/O面临 ...
- 针对数据量较大的表,需要进行跨库复制,采用navcat 实现sqlite数据库跨数据库的数据表迁移 [转载]
2014年12月13日 14:36 新浪博客 (转自http://www.cnblogs.com/nmj1986/archive/2012/09/17/2688827.html) 需求: 有两个不同的 ...