题目来源
NSSCTF | 在线CTF平台因为热爱,所以长远!NSSCTF平台秉承着开放、自由、共享的精神,欢迎每一个CTFer使用。https://www.nssctf.cn/problem
[SWPUCTF 2021 新生赛]gift_F12
这个题目简单打开后是一个网页
我们一般按F12或者是右键查看源代码。接着我们点击ctrl+f后快速查找,根据题目给的格式我们搜索ctf即可看到flag,如下图所示。
或者是
接着根据题目所给的格式NSSCTF{}写入flag即可解出 ,这里给大家一个示例
NSSCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft}
[SWPUCTF 2021 新生赛]jicao
知识点:网站请求的POST、GET方法,JSON
阅读源码了解到需要post值给id,get值给json,json_decode()
可以对一串JSON进行解码,故需要构造payload为 {"x":"wllm"}
之后:
方法一:使用HackBar进行/?id=wllmNB,然后post json
方法二:使用burp直接修改请求头
另:json
格式为
解题方法如下:
这里大家在火狐浏览器右上角点击...然后点击扩展HackBar安装然后点击题目,接着点击检查,点击load URL加入?json={"x":"wllm"} 接着设置为Post data
将下面的值写入id=wllmNB然后点击Execule即可解出flag
[SWPUCTF 2021 新生赛]easy_md5
题目如下
既要两变量个值不相同,又要两个变量md5值一样,
可以发现此时判断md5值是否一样用的是==
,这是php的弱类型比较,
方法一: 可以使用带0e开头的数字穿进行传递参数,因为php会将0e开头的数字转化为0,故此时md5值相等,而两个变量值不相等;
方法二: 可以传递数组,如name[]=123,password[]=456,md5不能加密数组,故两个md5返回的都是null
另:若遇到===
这样的强类型比较,方法一就失效了,方法二仍然有效,或者还可以使用软件fastcoll进行md5碰撞,生成两个字符串使得他们的md5值相同
另:0e开头的数字
解题方法
选上面两个md5的值对撞即可得到flag
[SWPUCTF 2021 新生赛]include
题目:
那我们就上传一个file,在搜索栏中 ?file 、?file=ture 、?file=false都可以试一下如下图所示:
看到代码后发现是伪代码,这里我讲一下什么是伪代码:
根据题目我们发现有include_once函数;
include_once():在脚本执行期间包含并运行指定文件。该函数和include 函数类似,两者唯一的区别是 使用该函数的时候,php会加检查指定文件是否已经被包含过,如果是,则不会再被包含。
于是我们进行伪造:
php://filter/convert.base64-encode/resource=flag.php
即可得到一串字符,这里给大家补充一下base64的概念
Base64编码和解码的基本概念
- 编码:将二进制数据转换为ASCII字符的文本格式。Base64编码使用64个字符(A-Z, a-z, 0-9, +, /)来表示数据。
- 解码:将Base64编码的文本转换回原始的二进制数据。
最后我们base64解码即可获得flag
[SWPUCTF 2021 新生赛]easy_sql
我们打开题目
上面写了wllm是参数,那么这个题给参数可能是让我们sql注入。
https://download.csdn.net/download/m0_73951999/89721502https://download.csdn.net/download/m0_73951999/89721502
这里给一个链接点进去就可以看到这道题怎么解sql的了。
这位大佬写的解题思路非常清晰,所以这里我就不过多赘述。
[SWPUCTF 2021 新生赛]easyrce
题目如下:
解题思路如下:
我们可以发现是用的是exec()函数,无回显,并且是GET请求。
这里给大家补充一下知识,我们进入前看到标题REC这里给大家说一下
REC题目,常用的几个系统命令执行函数
system();
passthru();
exec();
shell_exec();
popen();
proc_open();
pcntl_exec();
这些都是php通过系统命令来查看文件内容比如我举个例子system("ls");这种通常在没有任何限制的情况下可以查看所有文件,但是题目肯定会设计一些困难,比如说不给你输入空格、=、#、&等这种特殊字符常常被限制,那么一般怎么绕过呢,我们可以这样子,空格在php执行中(不考虑版本的情况下)可以使用%20来代替,比如说system("ls /"); 时可以改为system("ls%20/"),a[]=1时可以改为a[]%=1,而#号可以使用%23来代替。(这里大家注意一下字符输入的时候一定一定要对,不然不会有反应甚至404)
好了回归正题,我们可以开始解了,根据上面已知的信息,我们可以先写一个?url=system("ls");发现是index.php那可能是让我们确定一下路径我们可以这样子写?url=system("ls /");
?url=system("ls20%/");我们也试一下
可以发现没问题, 然后我们看到的这些所有文件了
我们仔细看一下哪个像flag很明显是flllllaaaaaaggggggg,那么我们就要去这个路径下面的文件才能找到flag ,这里我们要使用cat或者是tac,这个我解释一下,这些都是查看的意思,简单来说就是通过执行cat或者是tac路径下的文件你们我们接下来如图所示,解题方法如下:
第一种通过?url=system("cat /f*");通过f*指针查找有关f的
第二种 ?url=system("cat20%/fflllllaaaaaaggggggg");替换空格也可以得到flag
第三种 ?url=system("cat20%/fflllllaaaaaaggggggg");
第四种?url=system("cat20%/fflllllaaaaaaggggggg");
其实还有很多方法解出大家都可以试一下,这里我给大家拓展一下怎么用蚁剑做这道题
下面是中国蚁剑的资源:
https://download.csdn.net/download/m0_73951999/89724306https://download.csdn.net/download/m0_73951999/89724306
GET请求url,看到eval就是蚁剑连接,但是它要POST请求才行,那就直接用一句话木马连接它
也就是利用eval这句话然后改成GER改成POST后面url改成传入的参数
像我这样子添加数据即可 node5.anna.nssctf.cn:26152/?url=eval($_POST['a']);然后在点击进去
点击fflllllaaaaaaggggggg文件后发现flag