[SUCTF 2019]Pythonginx
[SUCTF 2019]Pythonginx
1.进入环境后看到一个输入框和下面的源码,右键查看源码可以看到整齐的代码
2.还给了nginx的提示,记录下nginx的一些配置文件信息
- 配置文件存放目录:/etc/nginx
- 主配置文件:/etc/nginx/conf/nginx.conf
- 管理脚本:/usr/lib64/systemd/system/nginx.service
- 模块:/usr/lisb64/nginx/modules
- 应用程序:/usr/sbin/nginx
- 程序默认存放位置:/usr/share/nginx/html
- 日志默认存放位置:/var/log/nginx
- 配置文件目录为:/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