1,web517
通过输入两个单引号让查询语句正常,判断是什么注入,使用的是什么字符
然后我们通过order by 判断回显位,进行一个联合查询注入
获取数据库名
ctfshow的sqli-labs和本地搭建最大的不同,就是show的flag不在当前的security
库中,而是在另一个库ctfshow
中
我们在联合查询时,用的是information_schema
,这个库中有tables
、columns
,也有另外一个叫schemata
的表,里面存储的就是数据库中所有的库名。
爆出表名
爆出列名
爆出flag字段
2,web58
var_dump() #打印变量相关信息
print_r() #打印多个变量的值,可以打印复杂类型变量的值,如array
file_get_contents()
highlight_file()
show_source() #highlight_file()的别名
readfile()
scandir() #用于打印目录下的文件
试了一下system() 不行
print_r(scandir('.')); #打印当前目录文件名字
show_source('flag.php'); #对文件进行语法高亮显示。
获取当前目录的名字
通过show_source('flag.php');高亮显示flag
3,web65
print_r(scandir(dirname('FILE'))); 扫描一下文件
高亮显示文件
4,web66
使用上一题的 payload 发现文件不在原来的位置了
我们使用print_r(scandir("/"));进行查找
print_r() #打印多个变量的值,可以打印复杂类型变量的值,如array
scandir() #用于打印目录下的文件
找到了
5,web67
使用上一题的 payload
6,web68
访问就是这个
禁用了 highlight_file() ,但传参应该还是c
print_r被禁了,使用 var_dump()
还是在flag.txt
readfile 函数是 PHP 中用于读取文件并将其内容输出到缓冲区的函数。
7,web69
print_r(glob("*")); // 列当前⽬录
print_r(glob("/*")); // 列根⽬录
print_r(scandir("."));
print_r(scandir("/"));
$d=opendir(".");while(false!==($f=readdir($d))){echo"$f\n";}
$d=dir(".");while(false!==($f=$d->read())){echo$f."\n";}
$a=glob("/*");foreach($a as $value){echo $value." ";}
$a=new DirectoryIterator('glob:///*');foreach($a as $f){echo($f->__toString
()." ");}
$d=opendir(".");while(false!==($f=readdir($d))){echo"$f\n";}
opendir("/") 是 PHP 的一个函数,用于打开指定目录
hile(false!==($f=readdir($d))) 是一个 while 循环,用于遍历目录中的所有文件和文件夹。循环的条件是 readdir($d) 的返回值不等于 false。如果不等于 false,说明还有文件或文件夹可以读取,循环继续;如果等于 false,说明目录已经读取完毕,循环结束。
读取文件
8,web70
过滤了 error_reporting() , ini_set() , highlight_file()
读取文件
9,web389
黑盒测试先扫一下目录
访问/debug/,提示权限不足,上一题的debug目录是文件包含
f12,查看了一下cookie,可以看到使用的是jwt加密,有非常明显的两个点,jwt是由三部分组成
解密
sub改为admin,因为采用了HS256加密需要找secret,secret可以爆破就是123456
知道文件路径,直接将flag,写到flag.txt文件
10,web390
访问公园往事的时候出现了一个id=2,有可能存在sql注入
是数字性注入
三列
2,3回显
库名
sql注入,直接通过sqlmap注入,获取 /var/www/html/alsckdfy/check.php
11,web391
sqlmap没有跑出来
搜索也有注入点
成功
12,web392
python sqlmap.py -u https://abeb2542-4977-4b11-899b-1e80197665f8.challenge.ctf.show/search.php?title=1 --file-read /var/www/html/alsckdfy/check.php
又拿sqlmap测了一下,发现不在原来的位置了
通过--os-shell的写入两个php文件,执行命令查找flag
放在根目录flag里面了
13,web393
sqlmap没有跑出来,看了一下wp,发现是通过堆叠注入配合ssrf获取flag的
在主页下面发现可以选择搜索引擎
后台应该是根据这里传入的id值到数据库中查询url,然后访问url,返回访问结果,存在ssrf
先通过sqlmap获取表名和库名,利用堆叠注入插入数据
然后访问link.php?id=10
14,web394
和上一题很像,但根据它的提示flag可能又回去了
试了一下上一题的payload发现不行,应该是过滤了什么
测试了一下是把file过滤了,找一下绕过,发现16进制可以
的确没在根目录下了
15web395
上⼀题payload可以打