先看一下目录结构

Data ---  应该为缓存之类的

Install--- 安装目录

Member---  用户目录

Module---  模型

Public---   公用

Source---    未看

System---  后台

Themes---   主题

Config.php  配置

Dir.sql 安装时所需的数据库文件

Index.php  入口文件

Test.php  

 

TEST.php

不知道这个test.php到底是干什么的,然后我打开它执行一下它里面的语句,是把导航查询出来然后以数组的形式进行输出,感觉没什么用,先放着

 

Config.php主要对数据库进行了配置

 

然后看一下index.php  

把其中必要重要的东西记录一下:

define('ROOT_PATH', str_replace('\\', '/', dirname(__FILE__)).'/');

定义常量,根目录,文件目录部分的\\替换为/

define('CORE_PATH', ROOT_PATH.'source/'); source目录

define('MOD_PATH', ROOT_PATH.'module/');  module目录

任意文件包含

index.php中有这么一段

$module = $_GET['mod'] ? $_GET['mod'] : $_POST['mod'];

然后在浏览器中可以看到例如用户注册 URL为 http://localhost/member/?mod=register

Mod=模型名,这样就很容易理解他的逻辑了

然后我跟随逻辑一个一个进行查看。

如果我在 module目录新建一个phpinfo()的文件,名字为phpinfo呢

 

 

可以看到phpinfo出来了,他并没有判断里面的内容和用户,而是存在就在后面添加.php执行,那麽我把内容改为一话呢?但是怎么让他存在这个文件就是个令人深思的问题喽。

 

 

然后我直接在URL修改模块名字,一个一个分析。

Api.php中看到了intval ,这个函数是把用户的输入转换为整数,一般来说这种就不存在注入问题了。

很多表单限制字数  maxlength="20"修改即可

Login.php

表单提交用户名密码trim消除空格无视导致用户登陆处SQL注入一枚

 

 

既然用户登陆处存在SQL注入,那麽来看一下管理员代码处

 

 

使用到了htmLspecialchars函数过滤了提交的用户名密码,但是大家知道这个函数他是过滤XSS的,那麽对SQL注入有关系吗?SQL注入一枚

 

 

同样的在用户注册也用了trim,但是后端限制了字数

 

后台添加用户用的和前台一样的方法,SQL一枚

 

 

添加广告

 

Keywords 把Post的 过滤 。如果没有POST的就使用 GET过来的,但是GET过来的没有过滤

 

 

不得不说到处都是SQL注入。。。

 

 

后台GETshell

 

这里倒是加上过滤了,可是好像驴头不对马嘴

 

 

直接将修改的内容写入配置,我在修改配置时

 

 

页面版权加入一句话木马,然后GETSHELL。

 

 

这套源码确实挺适合我们小白学习审计的,应该还有很多洞没有看,实践出真知。

 

欢迎关注我的博客,渗透吧:http://tieba.baidu.com/f?kw=%E6%B8%97%E9%80%8F&fr=index&red_tag=m3333245982

 posted on 2018-03-21 19:57  Syst1m  阅读(234)  评论(0编辑  收藏  举报