[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格式操作;
代码审计。