进阶SQL注入靶场 - CVE-2019-9762
解题思路
网上找到了POC ,该漏洞系代码审计发现,详细解释见网上POC,该通杀漏洞主要存在于PHPSHE 1.7
自己的研究思路
- 网上的POC只说了个大概,并不能够完全还原一个入门白帽子的测试历程,接下去我将以个人角度来总结一下整个靶场的解题过程
信息收集
- 根据靶场提示在网上寻找POC“CVE-2019-9762”
- 进入靶场,注册账户
- 由于靶场有提示,所以我们直接去查了POC,如果没有提示怎么办?那么我会
- 在线指纹扫描
- xray扫描
- dirseach跑敏感目录
- oneforall或者layer子域名挖掘机找包含admin这类的可能是后台的子域名
- 在网站上寻找功能点进行万能密码等初步测试
根据POC进行渗透测试
- 网上的POC大致内容是一样的,但是,burp传参的内容有些许差别
- 首先测试正常页面,会包含subject的内容,其中的
Content-Length: 1356
- 传参错误导致sql语句执行错误时的burp返回包内容如下,缺失了很多数据,可以比对出正确与错误的差别在哪里,其中的
Content-Length: 1130
获得flag
- 到这一步,也就是获得了库名和用户,那怎么获得flag呢?
- 我试了id=pay` where 1=2 union select 1,2,(select tablename from information_schema.tables where table_schema=’phpshe’ limit 0,1),4,5,6,7,8,9,10,11,12#,但是没有出数据,显示数据库语句执行错误
- 回头看了一眼POC中漏洞的发现过程,我猜想大概率是魔术引号的缘故把引号给过滤掉了,所以数据库无法识别到table_schema=’phpshe’ 而导致语句出错,那么我改变思路,盲猜字段名和表明
- 把语句改成id=pay` where 1=2 union select 1,2,(select flag from flag limit 0,1),4,5,6,7,8,9,10,11,12#_
- URL编码成id=pay`%20where%20-1=-2%20union%20select%201,2,(select%20flag%20from%20flag%20limit%200%2C1),4,5,6,7,8,9,10,11,12%23_
- 获得flag:flag{SQL-CMS}
- 如果猜不出怎么办?字段名flag几乎肯定不会变的,那么表名可以放burp爆破,甚至字段名都可以一起爆破。
学kali的小白
发表于 2023-2-18
获取flag那里,我觉得可以尝试先去用table_schema=database() 去获取表名,不需要用到引号,获取字段的时候可以尝试把table_name=[表名] 这里的表名用16进制转换一下也是可以不用到引号的
评论列表
加载数据中...