昔年互联网安全比赛

前言

忙完了期末考就在摸鱼的路上越走越远了,回过头来发现又什么都不会了,刚好有个比赛做做题回忆回忆QAQ
昔年互联网安全比赛
CTF首页

签到题

复制粘贴,完事了。

1
#flag{qiandao}

简单的审查元素

直接右键源代码

1
2
3
4
5
6
7
8
9
10
11
12
function func()
{
var str=document.getElementById("origin").value;
if(hex_md5(str)=="a78e614a56f1a8d3c566bf13ba519fd3")
{
alert("#flag{htmlview}");
}
else
{
alert("error");
}
}

简单的getshell

通过上传一句话getshell
这里我使用%00截断来上传一句话
截断
得到文件的路径
路径
用c刀去连接一句话得到flag
get

无压力的SQL注射

没有任何过滤,最简单的SQL注入,这里方法有很多种
具体请参考:传送门

WIDECHAR

已经提示是宽字节注入
具体请参考:传送门
这里需要注意的是flag并不在数据库里面,我们不难发现数据库里面有一个账号密码,可以想象一下应该是用来登录某个后台,用御剑扫一下得到

1
wpt5.xiniani.org/admin/

登录后得到flag

1
#flag{derc:wcharinject}

SIMPLE LEF

这是一个本地文件包含,可以直接使用

1
file=php://filter/read=convert.base64-encode/resource=index

得到base64编码后的源码,base64解密一下得到

1
2
3
4
骚年,flag会直接告诉你吗
<?php
$flag='#flag{phpincludeexp}';
?

SEO EXPLODE

扫一下目录发现robots.txt

1
2
3
User-agent: *
Disallow: /manag3r/
Disallow: /manag3r/s3cr3t.txt

于是访问/manag3r/s3cr3t.txt得到

1
#flag{seorobotsget}

BACKUP

这是一道源码泄露的题目,可能太久没做题或者以为是什么骚套路,把bak这种文件给忘了,真是太笨了QAQ

1
http://wpt8.xiniani.org/index.php.bak

flag就在源码里面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>资料查看</title>
</head>

<body>
<?php
if($_GET['pwd']=="xinianzuishuai")
{
echo "#flag{xinianshuaishuai}";
}
?>
</body>
</html>

0RACK 1t

更新ing

CLIENTIP

题目直接给了源码

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
50
51
52
53
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>内部接口</title>
</head>

<body>
<?php
include("flag.php");
$ip=GetIp();
if($ip=="127.0.0.1")
{
if(!isset($_GET['act']))
{
?>
<form action="?act=submit" method="post">
用于接收数据的IP<input name="ip" />
用于接收数据的端口<input name="port" />
<input type="submit" value="提交" />
</form>
<?php
}
else
{
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 1, "usec" => 0));
socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array("sec" => 1, "usec" => 0));
if(socket_connect($socket,$_POST['ip'],$_POST['port']) == false)
{
echo '连接失败';
}
else
{
if(socket_write($socket,$message,strlen($message)) == false)
{
echo '数据发送失败';
}
else
{
echo '数据发送成功';
}
}
socket_close($socket);
}
}
else
{
echo('本接口只允许本地使用');
}
?>
</body>
</html>

1、对于验证的clientip可以直接用xff绕过
2、然后就是需要用一个公网地址接受服务器发送过去的数据,这里我使用的是SocketTest
3、通过站长之家得到服务器的IP地址
4、与服务器建立连接
5、开始监听,得到发送过来的数据
socket

------ 本文结束感谢您的阅读 ------
坚持记录生活,您的支持将鼓励我继续创作!