跳转至

PyCalc⚓︎

327 个字 预计阅读时间 1 分钟

解题过程⚓︎

看了看源码,就是一个 python 计算器,使用了 eval 函数来计算表达式。看上去没有什么很可疑的地方,感觉基本就是 eval 函数的一些问题了,来注入一些特殊的东西。

eval 函数是一个非常危险的函数,直接执行字符串中的代码,但是此程序把这些英文字母和特殊字符都过滤掉了,看起来是没问题了,但是我们确实需要把这些特殊字符注入进去,那还能怎么办呢?经过搜索之后,发现还是有一个点可以利用的。

参考链接在这里:python-unicode。 Python strings are collections of Unicode codepoints, not “characters”. 这表明Python处理的是Unicode码点,而不仅仅是ASCII字符。

根据这一点,我们就确定了我们的构造思路,通俗来说,也就是找一批神似的字符来代替原来的字符,以达到欺骗的目的。

然后我们可以构造出 𝗈𝗉𝖾𝗇(𝖼𝗁𝗋(47)+𝖼𝗁𝗋(102)+𝖼𝗁𝗋(108)+𝖼𝗁𝗋(97)+𝖼𝗁𝗋(103)).𝗋𝖾𝖺𝖽() 此来注入,然后成功拿到 flag 0ops{b6f90dc4-cd4d-453e-b6ab-27532460f3a8}

感受⚓︎

感觉此题方向性比较明确,也是让我对 python 的了解更加深了一步,能搜到相关的资料信息基本上此题就拿下了。

评论区

有什么意见和想法,欢迎在评论区提出,也欢迎聊天哦~