ctf-题库知识

这是一篇有关ctf中做的一些题库

[SWPUCTF 2021 新生赛]gift_F12 | NSSCTF

题目要求找出相应的flag,使用chrome打开网址,由于是源码泄露,所以猜测应该是在html中,这时,打开网页,然后使用ctrl+u打开源码审计,搜索flag,发现flag在JavaScript中,得到flag,这道题就over了。

[SWPUCTF 2021 新生赛]jicao | NSSCTF

网站打开之后,代码如下

1
2
3
4
5
6
7
8
<?php
highlight_file('index.php');
include("flag.php" );
$id=$_POST['id'];
$json=json_decode($_GET['json'],true);
if ($id=="wllmNB"&&$json['x']=="wllm")
{echo $flag;}
?>

这是一段php代码,

详细解释参考[SWPUCTF 2021 新生赛]jicao-CSDN博客的解题思路,但是在这个过程中,需要注意,第一,需要一款插件,被称之为HackBar的插件,插件地址为0140454/hackbar: A browser extension for Penetration Testing,可以直接下载之后使用chrome打开,该插件主要是通过F12打开,当一切参数按照网站要求填写OK之后,可以点击execute实现执行。

[SWPUCTF 2021 新生赛]easy_md5 | NSSCTF

PHP弱比较绕过,PHP比较分为强比较和弱比较(php比较绕过(强比较“===”/弱比较“==“)_php强等于绕过-CSDN博客)

弱比较

PHP的字符串和数字比较时,会将字符串先转化成数字类型在进行比较。字符串以数字开头,则以前部数字为转化结果、开头不是数字的,则为null或者是0

1
2
3
'12'==12    //true
'12abc'==12 //true
'adm2n'==0 //true

布尔值和任何字符串都是相等的,除了0.

1
2
3
4
'way'==true    //true
'flase'==true //true
234==true //true
0==flase //true

Hash值和字符串比较

因为当hash开头为0e后全为数字的话,进行比较时就会将其当做科学计数法来计算,用计算出的结果来进行比较

1
2
md5($str1)=0e420233178946742799316739797882
md5($str2) == '0' //true

弱比较绕过

  • ==绕过

两个等号是弱类型比较,他会将两边自动转换为同一种类型后再进行比较。所以他比较的就只是值 ,不比较类型。

1
2
12.0==12  true 12.0==12
'12'==12 true '12'==12
  • switch绕过

switch()函数的参数和弱比较类似,会将参数进行转换,转换成int型值。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$a='2abc';
switch($a){
case 1:
echo 111;
case 2:
echo 222;
case 3:
echo 333;
}
?>

>>222
  • intval()函数

intval()函数是获取变量的整数值,但是intval()函数有个漏洞就是他也会自动获取数字,从数字开头到出现字母后停止。有是也会利用这个来进行绕过;另外intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

1
2
$num=2e4
intval($num)<2020 && intval($num+1)>2021

第一个判断取到的值为2,第二个判断会先计算加法,为20001,即可成功绕过。

===强比较

MD5强碰撞是一种安全漏洞利用技术,它涉及到在MD5哈希函数中找到两个不同的输入值,这两个值产生相同的哈希输出。这种情况在理论上不应该发生,因为MD5设计为单向哈希函数,意味着它应该为每个唯一的输入生成一个唯一的输出。然而,由于MD5的弱点,强碰撞成为可能。

目前已知的强比较字符串有

[安洵杯 2019]easy_web - Sentry_fei - 博客园(这个题还挺难的!!!)