CTF / LEARNING NOTES

CTF WP

HTTPS 解密与 Cookie 伪造
▰   CTF 题解约 1,250 字 · 4 分钟
本文目录

Web

HTTPS中间人攻击

对题目的解读:HTTPS = HTTP + TLS 保护,抓到的数据通常是加密的。
中间人:相当于是用户和网站之间有拦截的人,可以篡改双方发送的信息。(中间人对浏览器假装自己是网站,对网站则代替你发送请求。如果成功,就可能看到密码、Cookie,或者修改网页返回的内容。)

(1)进行内容的查看

包含一个TLS日志文件和一个pcap文件
alt text
那就可以对TLS日志进行解密处理,看到里面内容

(2)对TLS的处理

图里有 CLIENT_TRAFFIC_SECRET_0、SERVER_TRAFFIC_SECRET_0,可以用来尝试解密配套抓包里的 HTTPS
alt text
具体流程:1.用 Wireshark 打开 .pcap 文件 2.点击顶部 编辑 → 首选项 → Protocols(协议)→ TLS 3.找到 (Pre)-Master-Secret log filename,点右边的「浏览」,选择刚才的 sslkey.log
得到
alt text
找到http的数据包,这就是https解密后的数据包,进行http流的追踪
得到flag
alt text
这里进行注释:1.TLS:全称是 Transport Layer Security,中文叫“传输层安全协议”。它负责保护你和网站之间传输的数据。
2.TLS的开头结构:名称 连接标识(Client Random) 密钥材料 比如:SERVER_HANDSHAKE_TRAFFIC_SECRET

单词 意思
CLIENT 客户端,比如你的浏览器
SERVER 服务器,比如你访问的网站
HANDSHAKE 握手,也就是正式传数据前协商连接
TRAFFIC 通信流量
SECRET 秘密材料,用于派生加密密钥
3.Wireshark可以借助匹配的 TLS 密钥日志,解密抓包里的通信

Cookie伪造

就是人为构造或修改浏览器发送的Cookie,尝试让服务器把你当成另一个用户,或者给你更高的权限
本题就是伪装成管理员
此类题目会给出一些提示如:set-cookie等

(1)用BP打开查看一些请求和回复文

alt text
发现并无要伪造cookie的地方,那尝试一下弱口令的登录(此举可以通过bp的暴力破解功能进行执行,也可以猜测),最终得到弱口令为guest

(2)登录查看

alt text
图中有

1
Set-Cookie: role=guest

相当于我们是访问者权限不高,改成admin可以获取更高权限
alt text
得到flag

一句话木马变形

注:一句话木马的基础形式为: 其本质为把攻击者传入的内容,当成代码执行,eval是危险的,本体之所以叫变形就是他的内核时一句话木马但是并不是裸露状态的是有过滤的,上述一句话木马可以直接用蚁剑连接,但是此题是行不通的

(1)检查过滤词

alt text
可以看到此处只让字母数字下划线括号引号通过(内容随便输入的)

(2)其实在此处可以联想到用蚁剑做一句话木马的时候flag一般都在一个文件夹里,那么此处依旧想到查看其目录,因为其有过滤词那就想办法绕过

查看目录scandir(“.”),但 “.” 过滤了,利用一个函数 localeconv():它返回系统数字格式数组,第一个元素永远是小数点 .,再用 current() 取第一个元素 打印一下

1
print_r(scandir(current(localeconv())));

alt text

找到其中的flag.php,读取他的内容
“flag.php”,但可以用数组操作把它 “选” 出来:
array_reverse(…) 把文件列表倒序:index.php, flag.php, .., .
next(…) 指针后移一位,正好指向 flag.php
readfile(…) 把文件内容原样输出

1
readfile(next(array_reverse(scandir(current(localeconv())))));

alt text
总结这道题目主要还是绕过找到核心文件
其用到的语法有:scandir(“.”) localeconv() current() print_r() array_reverse(…) 把文件列表倒序*next(…)*指针后移一位 readfile(…) 把文件内容原样输出
(无参数函数 RCE)(”命令执行”、”代码执行”、”RCE”、”命令执行绕过”、”一句话木马”)
固定流程:

  1. 确认执行点:phpinfo();
  2. 看环境:disable_functions、open_basedir、环境变量里有没有 flag
  3. 列目录:scandir(“.”) ← 先看有什么文件
  4. 定位 flag:当前目录没有就 dirname 往上跳、扫根目录
  5. 读文件:readfile / highlight_file
    总结:为什么叫做一句话木马变形,其本质还是在于eval()这个函数,其可以将括号内攻击者输入的东西当作命令来执行,就像是上面输入的scandir为什么可以执行就是这个原因,但是其加了一层类似过滤的保护装置,导致不可以直接进行攻击,只能绕过加攻击。

源代码

题目为源代码,那就先看源码,f12
alt text
那可以进行解码,这个是URL 编码(百分号编码),其格式为%+十六进制,将十六进制转成十进制,再根据ASCII编码进行解码。
两个拼接起来得到

1
2
3
4
5
6
7
8
9
10
function checkSubmit(){
var a = document.getElementById("password");
if("undefined" != typeof a){
if("67d709b2b54aa2aa648cf6e87a7114f1" == a.value)
return true;
alert("Error");
a.focus();
return false;
}
}

得到密码为:67d709b2b54aa2aa648cf6e87a7114f1
alt text