LeetCode
3的幂
判断一个整数是否是3的幂。首先对输入的整数进行判断,如果小于等于0则直接返回false。然后对输入的整数进行循环除以3的操作,直到除以3得到的结果为1为止。在循环过程中,如果发现余数不为0则返回false,表示输入的整数不是3的幂。最终如果循环结束,说明输入的整数是3的幂,返回true。
1 | class Solution { |
4的幂
判断一个整数是否是4的幂。首先对输入的整数进行判断,如果小于等于0则直接返回false。然后对输入的整数进行循环除以4的操作,直到除以4得到的结果为1为止。在循环过程中,如果发现余数不为0则返回false,表示输入的整数不是4的幂。最终如果循环结束,说明输入的整数是4的幂,返回true。
1 | class Solution { |
统计能整除数字的位数
计算一个整数中有多少个数字能整除这个整数本身。首先定义一个变量n用于记录符合条件的数字个数,另一个变量m用于保存输入的整数。然后对输入的整数进行循环,每次取出最后一位数字进行判断是否能整除整数本身。如果能整除,则n加1。最后返回n,表示整数中有多少个数字能整除这个整数。
1 | class Solution { |
BuuCTF
17、BackupFile
题目名称叫备份文件,直接用dirsearch扫描:py -3.9 http://2677258c-1c01-46a9-9f37-cef51bea8534.node4.buuoj.cn:81/ -e php
响应成功的
访问/index.php.bak文件,下载下来了
查看文件,如果key=123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3,输出flag
如果直接构造payload:/?key=123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3
显示只要数字
==是弱相等,所以当key=123时,就会输出flag
构造payload:/?key=123
得到flag
1 | flag{7e29466e-c1e3-4679-8eda-80c196664fe2} |
18、Easy Calc
查看源代码,没看到啥
抓包,发现一个calc.php文件
查看该文件,有一个黑名单
1 | 知识点: |
查看源码,$(“#content”).val()相当于 document.getElementById(“content”).value;
PHP的字符串解析特性
尝试一下/calc.php?num=phpinfo()
1 | PHP的字符串解析特性:PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:1.删除空白符 2.将某些字符转换为下划线(包括空格)【当waf不让你过的时候,php却可以让你过】。假如waf不允许num变量传递字母,可以在num前加个空格,这样waf就找不到num这个变量了,因为现在的变量叫“ num”,而不是“num”。但php在解析的时候,会先把空格给去掉,这样我们的代码还能正常运行,还上传了非法字符。 |
加个空格
由于“/”被过滤了,所以我们可以使用chr(47)来进行表示,进行目录读取:calc.php? num=1;var_dump(scandir(chr(47)))
构造:/flagg——chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)
payload:calc.php? num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
得到flag
1 | flag{21d2d1ed-ae60-4490-a8b0-0f712482f7cd} |