buuctf - [ACTF2020 新生赛]BackupFile

题目考点

源码泄露

思路

正常如果有源码泄露,用字典可以跑出来,buu平台禁止发包频繁,参考wp找到源码.
审计源码,

<?php
include_once "flag.php";

if(isset($_GET['key'])) {
    $key = $_GET['key'];
    if(!is_numeric($key)) {
        exit("Just num!");
    }
    $key = intval($key);
    $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
    if($key == $str) {
        echo $flag;
    }
}

else {
    echo "Try to find out source file!";
}

key必须为数字,当key为数字后,与str比较,因为是弱类型比较,php会将string转化为int进行比较,从第一个字符开始后面的字符会被截去。


源码路径

[题目路径]/index.php.sak

payload

?key=123

PHP比较(字符串-字符串)

  • 均为数字字符串的a、b,通过数字字符串大小进行比较
  • 均为字符字符串的a、b,用过ascii码进行比较
  • a、b位数字,字符串中内容为aeb、0xab理解成科学计数法、进制进行比较
  • a数字,b纯字母字符串,b即为0去比较
  • a数字,b数字字母字符串,123abc->123,b123abc->b->0??????【学php后再检测这部分的正确性
  • intval(函数)

intval.png

本文链接:

https://littlewhite.fun/index.php/90.html
1 + 1 =
快来做第一个评论的人吧~