您现在的位置是:首页 > 学无止境 > 杂七杂八 网站首页学无止境

i春秋 web题 write up

Who you are?

进入题目链接,发现显示 Sorry. You have no permissions.  这时查看一下请求头,发现在Cookie那里存在一个Cookie:role==Zjo1OiJ0aHJmZyI7, 感觉这个role应该就是用来判断用户身份的,后面的字符串为base64编码,于是解码得到  f:5:"thrfg"; ,thrfg是什么??第一感觉是直接把thrfg换成admin,然后base64加密作为Cookie,再次请求。失败了,所以thrfg应该是某个字符串加密了之后的结果。尝试一些方法之后发现是guest经过rot13加密,所以我们将admin经过rot13加密后替换thrfg,base64加密后再次请求。成功跳转,查看源代码。

根据注释里面的提示随便构造一组数据提交,filename=test.php&data=<?php echo system("ls"); ?> ,提交之后一直显示No No No,尝试改为filename=test.php&data[]=<?php echo system("ls"); ?>, 提交之后访问返回的文件地址,得到flag。 


破译

该题虽然归类在web题里面,但是可以当做是一道密码题来做。打开题目,提示破译一段密文

观察密文最后面,应该是一个FLAG{xxx}的形式,于是对比一下X和F,S和A,Y和G,发现都是相差18,于是猜测这是一个凯撒密码,所有字母都往后移了18位。开始编程还原,得到下面一段字符串:

BE5650G O 0BA CH50A A0D THE CH50ESE 9505ST4O 1F EDUCAT510 A001U0CED 910DAO A0 ENTE0S510 1F THE54 EN5ST50G 2A4T0E4SH52 T1 50C14214ATE F5T0ESS A0D BAS7ETBA88 DEVE8129E0T 50 E8E9E0TA4O, 95DD8E A0D H5GH SCH118S AC41SS CH50A.THE A001U0CE9E0T MAS 9ADE AT A S5G050G CE4E910O T1DAO BO 0BA CH50A CE1 DAV5D SH1E9A7E4 A0D NU TA1, D54ECT14 GE0E4A8 1F THE 50TE40AT510A8 C112E4AT510 A0D ENCHA0GE DE2A4T9E0T 1F THE 9505ST4O 1F EDUCAT510.'ME A4E ENC5TED T1 B41ADE0 1U4 2A4T0E4SH52 M5TH THE 9505ST4O 1F EDUCAT510 T1 9A7E A 810GO8AST50G 592ACT 10 THE 85VES 1F CH50ESE STUDE0TS TH41UGH A 6150T8OODES5G0ED BAS7ETBA88 CU445CU8U9 A0D A M5DE 4A0GE 1F SCH118 BAS7ETBA88 241G4A9S,' SA5D SH1E9A7E4. 'TH5S C1995T9E0T 9A47S A01THE4 958EST10E 50 THE 0BA'S O1UTH A0D BAS7ETBA88 DEVE8129E0T EFF14TS 50 CH50A.' F8AG { GS182D9HCT9ABC5D}

看到8占了L的位置,猜测加密时还使用了用数字代替某些字母。其中我们可以看出,8->L,然后将上述字符串中的8全部替换成L,再次观察一些很有代表性的单词,如BAS7ETBALL, 显然7->E,类似的观察其他单词,就可以得到替换规律,最终的到FLAG。


Login

进入题目,发现是一个登录框,无脑查看源码,发现存在一个注释,猜测是用户名和密码成功登录,跳转到member.php页面,可是这个页面啥也没有。于是抓包看看,发现在响应头里面有个一个 show: 0

这种非常规的响应头告诉我们它不简单,既然它是0,那我们就改成1,然后于是尝试重新请求该页面,在请求头里面加上show: 1。返回信息里面出现了代码审计一下这段代码,前面一部分是数据库查询相关,后面一部分里面出现了我们需要的东西——flag。所以我们需要设计一个请求值来满足条件,得到flag。在这里是需要token经过三个操作之后得到$login, 其中$login['user']='ichunqiu',于是我们写一个逆操作,在线运行一下得到一个字符串,然后将该字符串作为token的值添加到cookie中,重新请求,得到flag。


GetFlag

 进入题目,页面中除了用户名密码之外,还需要输入一个captcha,其中captcha经过md5加密后的前六位要和提示给的相同

所以我们写个脚本来得到一个可用的captcha,注意,刷新页面的话后面的值也会变,所以脚本里面的也要相应改变

得到一个可用的captcha之后,开始登录,尝试admin  admin ,发现显示error。重试,尝试万能式子admin' or '1'='1 ,登录成功,然后跳转到了一个下载文件页面。下载三个文件,发现a.php里面写的是

<?php
    echo "Do what you want to do, web dog, flag is in the web root dir";
?>

flag在根目录下??查看该页面源代码,我们可以获取到下载文件的url,我们可以把f=a.php的a.php换成flag.php的路径来下载flag.php。我们尝试用../来访问,发现../被过滤了,于是尝试一下绝对路径。查看响应头我们可以看到服务器为ubuntu,于是绝对地址为/var/www/html/Challenge/flag.php,替换a.php访问即可下载flag.php文件,打开可查看代码

可以看到,是要在该页面post一个参数flag,由于中间有一步eval("\$spaceone=$flag");即把$flag的值赋给$spaceone,然后$spaceone等于flag则显示helloctf.php的内容,但是在这里,我们不能直接post一个flag=flag,因为这样的话php会报错,我们需要再加一个英文分号; 这样的话eval()里面就是一个完整的语句,就可以顺利执行了。所以我们需要post一个flag=flag;

成功post之后,查看源代码即可得到flag。


象棋

进入题目,发现真的是一个象棋,没抵制住诱惑的我忘记了找flag,下起了象棋。言归正传,查看一下源代码,发现最后面有一个JS文件的url,里面包含了ctf三个字,所以这个js肯定不简单。url是个正则匹配式,这道题应该是让我们根据这个正则来得到正确的JS文件url。好了,思路有了,拿起python写脚本(菜鸡代码写的比较简陋,dalao莫笑),我们先把可能的url全部构造出来,然后写个多线程去遍历一下,响应码为200则是请求成功,我们就把这个url写入一个文本文件(直接打印的话有可能会被更多的失败信息刷掉)。坐等一会,发现在目录下新建了一个文本文档,打开里面果然是一个url,请求一下,直接就是flag了。


NotFound

进入题目,直接显示NotFound,查看一下请求,发现响应头里面有一个X-Method

这是要修改请求方式吗?那我们OPTIONS一下看看,OPTIONS用于获取当前URL所支持的方法。发现响应头里面出现了新的东西:?f=1.php

继续OPTIONS一下?f=1.php,发现并没什么有用信息,在阅读了某位dalao的wp之后才知道这里可以读.htaccess,所以改成f=.htaccess,继续OPTIONS

出现了一个地址,继续OPTIONS一下试试,出现了ip incorrect ???XFF???,  XFF??不就是X-FORWARDED-FOR么,添加一个试试,X-FORWARDED-FOR:127.0.0.1,发现并没什么用,那么换client-ip试试,成功得到flag


版权声明:本文为博主原创文章,转载时请注明来源。https://blog.thinker.ink/passage/15/

 

文章评论

Top