CTFshow web41遇到的问题及解决方法

CTFshow web41

遇到的问题

  1. 由于电脑上本来只有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
    

在这里插入图片描述

  1. 在学习脚本的时候,不清楚这段代码如何进行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)
    
    

解决方法

  1. 对于第一个问题,在与大佬交流后发现是pip的版本已经与python2.7出现部分问题,有些模块已经是python自带的了,所以pip远程库里便将有些模块删了,故pip找不到。于是便安装了最新的python3.9,这个问题便解决了,python3.9自带了urllib这个模块,不需要pip。而由于python2和python3尴尬的版本问题,单纯安装2和3的话,用python指令的时候不能很好的执行,所以这里需要解决python2和3的共存问题。下面的博主的方法完美解决。

    Python2与Python3共存的环境配置

    之前只有python2是这样的

在这里插入图片描述

而这时再用 python3 的import urllib的时候就不会报错了

在这里插入图片描述

  1. 当我想看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的相关代码是直接构造报文发送给后端的理解!!

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值