CTFshow web41
遇到的问题
-
由于电脑上本来只有python2.7,而通过学习羽师傅的python脚本发现需要导入urllib库,可是在pip的时候发现出现错误,远程库中没有这个模块。
ERROR: Could not find a version that satisfies the requirement urllib (from versions: none) ERROR: No matching distribution found for urllib
-
在学习脚本的时候,不清楚这段代码如何进行php或运算的,于是尝试手动通过Hackber输入进行试验,但浏览器始终报错。
while True: param=action(input("\n[+] your function:") )+action(input("[+] your command:")) data={ 'c':urllib.parse.unquote(param) } r=requests.post(url,data=data) print("\n[*] result:\n"+r.text)
解决方法
-
对于第一个问题,在与大佬交流后发现是pip的版本已经与python2.7出现部分问题,有些模块已经是python自带的了,所以pip远程库里便将有些模块删了,故pip找不到。于是便安装了最新的python3.9,这个问题便解决了,python3.9自带了urllib这个模块,不需要pip。而由于python2和python3尴尬的版本问题,单纯安装2和3的话,用python指令的时候不能很好的执行,所以这里需要解决python2和3的共存问题。下面的博主的方法完美解决。
之前只有python2是这样的
而这时再用 python3 的import urllib
的时候就不会报错了
-
当我想看
php或运算
是怎么工作的时候,我首先对param和post请求的data进行打印。while True: param=action(input("\n[+] your function:") )+action(input("[+] your command:")) print(param) data={ 'c':urllib.parse.unquote(param) } print(data) r=requests.post(url,data=data) print("\n[*] result:\n"+r.text)
我开始好奇这个指令是怎么通过前端发给后端的,于是我复制了第一行的编码在Hackber里发送。
发现报错,我换了其他格式和其他编码还是不行。。。
我开始怀疑是不是()
、%
等等的符号不能被编码,因为本来php的异或运算也不是用%13
等等数值,而是%13
等编码对应的ASCII值!!
比如像有些特殊字符是输入不出来的,具体看ASCII表
而param中的字符串很有可能是发送的报文,事实也证实了猜想。
显然特殊字符被编码的,而我们发送到Repeater,修改一下,发现显示出来了
所以,这更加深刻了我对python的相关代码是直接构造报文发送给后端的理解!!