[NISACTF 2022]checkin

本文介绍了如何解决一个CTF挑战,关键在于识别源码中的特殊Unicode字符并进行16进制转换。通过代码审计和理解PHP的渲染规则,最终构造出有效payload完成checkin。涉及到的知识点包括特殊字符识别、十六进制操作和代码审查。
摘要由CSDN通过智能技术生成

[NISACTF 2022]


题源:https://www.ctfer.vip/#/problem/2035


题目-checkin

1.源代码

在这里插入图片描述

2.普通传值行不通

=>看颜色:第二段注释部分颜色不对。(url通过show_source函数在高亮源代码时按照php.ini中的设置来渲染)

在这里插入图片描述

=>鼠标扫:扫前面有后面代码同步。
结论:源码中有特殊unicode字符的存在。

具体参考:

https://www.xiinnn.com/article/22d50835.html#原理剖析

=>复制到txt:有未识别的特殊字符显示。

3.查看16进制源码

=>复制代码到本地文本用winhex或010editor打开

在这里插入图片描述在这里插入图片描述

=>选定右边实际字符的参名和参数,并将复制其16进制数值
=>代入带Python的插值脚本,转为url编码格式
import re
string = "E280AEE281A620466C616721E281A9E281A64E315341435446"
# 写出正则表达式 任意2个字符
pattern = re.compile('.{2}')
# findall是找到所有的字符,再在字符中添加空格,当然你想添加其他东西当然也可以
print('%'.join(pattern.findall(string)))

4.最终payload

ahahahaha=jitanglailo&%E2%80%AE%E2%81%A6%55%67%65%69%77%6F%E2%81%A9%E2%81%A6%63%75%69%73%68%69%79%75%61%6E=%E2%80%AE%E2%81%A6%20%46%6C%61%67%21%E2%81%A9%E2%81%A6%4E%31%53%41%43%54%46

总结

所用知识点:
特殊字符识别;
hex格式操作;
代码审计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值