BUUCTF - Web - 1

1. [极客大挑战 2019]EasySQL 1【SQL注入-万能密码】

使用万能密码登录即可:admin' or 1#

2. [极客大挑战 2019]Havefun 1【前端代码审计-注释泄漏】

  1. 进入页面,发现只是一个撸猫页面,没有可以下手的地方。
  2. F12看看前端页面代码,发现有一段被注释了的代码:
    在这里插入图片描述
  3. 尝试在地址栏传入 cat=dog,即返回了 flag:
    在这里插入图片描述

3. [HCTF 2018]WarmUp 1【PHP代码审计】

  1. 同样 F12 查看代码,有一个 source.php:
    在这里插入图片描述
  2. 访问 source.php,查看代码,发现有一个 hint.php:
    在这里插入图片描述
  3. 访问 hint.php,出现:
    在这里插入图片描述
  4. 继续走查 source.php 代码,构造下列 payload:?file=hint.php?../../../../../ffffllllaaaagggg,得到 flag.
  5. 这里走查代码其实就是在对 url 做过滤,看是否在 whitelist 中,至于后面应该有几层目录那就试吧。

4. [ACTF2020 新生赛]Include 1【PHP伪协议】

  1. 查看页面只有一个 tips 链接,点击链接出现一句话:Can you find out the flag? 再没有其他内容;
  2. F12查看前端源码,也没有信息;
  3. 查阅资料,发现可以使用 PHP 伪协议:PHP伪协议是PHP自己支持的一种协议与封装协议,简单来说就是PHP定义的一种特殊访问资源的方法。
  4. 常用的 PHP 伪协议有:
5. php://input 是个可以访问请求的原始数据的只读流,获取POST请求数据的协议

6. php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(),在数据流内容读取之前没有机会应用其他过滤器。
在利用上很多都是与包含函数结合使用,读入或者输出获取文件源码然后编码让其不执行从而输出
php://filter 的使用:如
php://filter/read=convert.base64-encode/resource=index.php
php://filter/resource=index.php
  1. 尝试输入 php://input,发现被拦截了:
    在这里插入图片描述
  2. 尝试输入 php://filter,没有被拦截,输入:php://filter/read=convert.base64-encode/resource=flag.php,得到以下字符串,是base64编码的结果:
    在这里插入图片描述
  3. 解码以后得到 flag:
    在这里插入图片描述

5. [ACTF2020 新生赛]Exec 1【命令注入-基础】

  1. 打开页面,是一个 ping ip 地址的功能:
    在这里插入图片描述
  2. 想到可能存在命令执行漏洞,使用管道符执行其他命令:
    在这里插入图片描述
  3. 命令执行成功,尝试用 ls 命令查找其他目录,可以找到 flag:
    在这里插入图片描述
  4. 再用 cat 命令输出 flag:
    在这里插入图片描述

6. [GXYCTF2019]Ping Ping Ping 1【命令注入-空格替换+变量拼接】

  1. 进入页面,提示可以在参数中输入 IP:
    ](https://i-blog.csdnimg.cn/direct/08a3883eff044fff96b089a5d55b38d2.png)

  2. 输入 IP:
    在这里插入图片描述

  3. 尝试注入,发现空格会被拦截,使用 ;注入,可成功执行:
    在这里插入图片描述

  4. 其他命令的注入难免需要输入空格,需要尝试绕过空格。以下字符可以代替空格:

<
${IFS}
$IFS$9
%09

尝试后,发现可以代替空格的字符:
在这里插入图片描述
5. 直接查看 flag.php 会发现被拦截,查看 index.php:
在这里插入图片描述
发现过滤了很多字符,flag 字符串也被过滤了。此时如果还想要输入 flag,就得使用变量拼接的方式。如:a=g;cat$IFS$9fla$a.php(表示将字符 g 赋值给变量a,取值时通过 $a 取)。可成功在源码中得到 flag:
在这里插入图片描述

7. [SUCTF 2019]EasySQL 1 【SQL注入-堆叠注入】

  1. 输入数字,发现返回:
    在这里插入图片描述
  2. 输入其他 ’ " ,没有返回,报错注入不行;输入 union、sleep、if、and 这些都返回错误,说明一般的注入都不行。
  3. 尝试堆叠注入:

堆叠注入是一种SQL注入技术,允许攻击者在单个SQL查询中执行多个语句。 这种攻击依赖于数据库管理系统允许在单个查询中执行多个语句的特性。攻击者通过在输入的SQL语句后添加额外的分号(;)来分隔并执行多个命令,从而实现对数据库的未授权操作。

堆叠注入可成功执行:
在这里插入图片描述
在这里插入图片描述
但是其他语句就没法执行了。

网上的做法是根据几次尝试,猜测一下 sql 语句:

select $_POST['query'] || flag from Flag;#这里的 || 相当于或
select 1 || flag from Flag; #返回1,数值型bool值为真,字符型bool值为假
select 2 || flag from Flag; #返回1
select 0 || flag from Flag; #返回0
select 'a' || flag from Flag; #返回0
  1. 构造 sql:1;select *,1
select 1;select *,1 || flag from Flag;

在这里插入图片描述

8. [强网杯 2019]随便注 1 【堆叠注入-改表名】

  1. 输入 1’ ,发现有报错信息:
    在这里插入图片描述

  2. 输入 1’ or 1=1#,展示所有值:
    在这里插入图片描述

  3. 注入其他内容,发现大部分sql关键字被屏蔽了,但是 if、sleep 没有被禁,因此可以采用基于bool的注入或者基于时间的注入方式,可这两种方式太耗时了:
    在这里插入图片描述

  4. 尝试堆叠注入,果然也可以:
    在这里插入图片描述

  5. 查看表名:
    在这里插入图片描述

  6. 查看表结构,发现了 flag 字段:
    在这里插入图片描述

  7. 查看另一个表的表结构,发现有 id 和 data 字段,猜想我们当前查询就是在这个表下进行的。查询语句有可能为:select id, data from words where id = ‘xxx’;
    在这里插入图片描述

  8. 此时可以采用改表名的方式来查询,把words随便改成words1,然后把1919810931114514改成words,再把列名flag改成id,结合上面的1’ or 1=1#爆出表所有内容就可以查flag啦

0';rename table words to words1;rename table `1919810931114514` to words;alter table words change flag id varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;desc  words;#

在这里插入图片描述

9. [极客大挑战 2019]Secret File 1

  1. F12 打开页面查看源码,发现了一个隐藏链接:
    在这里插入图片描述
  2. 点击链接,源码中又发现了一个隐藏链接,再次点击,发现立即重定向到了 end.php:
    在这里插入图片描述
  3. 拦截请求,查看返回,发现注释中有一个 srcr3t.php:
    在这里插入图片描述
  4. 查看该文件,显示了源码:
    在这里插入图片描述
  5. 查看 flag.php,还是没有显示 flag:
    在这里插入图片描述
  6. 再回过头去看 srcr3t.php,存在文件包含漏洞,但是直接构造 file=flag.php 不展示 flag,尝试使用 php 伪协议,得到一串 base6 编码后的值,解码后得到 flag:
    在这里插入图片描述
    使用伪协议和直接访问的不同之处在于,使用伪协议可以读取到 php 文件的源码,而直接访问则会将文件当作 php 代码执行。

10 [极客大挑战 2019]LoveSQL 1【SQL注入-常规】

  1. 使用万能密码登录,可成功登录,但是没有有用的信息,说明有SQL注入漏洞:
    在这里插入图片描述
    在这里插入图片描述
  2. 对登录框进行SQL注入:
    1)尝试 sql 注入:admin' union select 1,2#,显示字段数有误。尝试后发现字段数是3。
    2)获取数据库名:1' union select 1,database(),3#
    3)获取表名:1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema="geek"#
    得到:geekuser,l0ve1ysq1
    4)获取字段名:1' union select 1,group_concat(column_name) from information_schema.columns where table_name="l0ve1ysq1"
    5)然后获取 l0ve1ysq1 表中的值:1' union select 1,2,group_concat(password) from l0ve1ysq1#。flag 确实就在 password 字段里。

相关推荐

  1. buuctf 部分web

    2024-07-21 16:46:04       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 16:46:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 16:46:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 16:46:04       45 阅读
  4. Python语言-面向对象

    2024-07-21 16:46:04       55 阅读

热门阅读

  1. WHAT - 贪心场景和算法实现

    2024-07-21 16:46:04       19 阅读
  2. 多级联动jquery-cxselect-js的使用

    2024-07-21 16:46:04       19 阅读
  3. 使用"山水博客"的排序功能制作"专题文章"

    2024-07-21 16:46:04       15 阅读
  4. C# Word转换HTML(附在线转换工具)

    2024-07-21 16:46:04       20 阅读
  5. memset函数使用原理及用例

    2024-07-21 16:46:04       12 阅读
  6. web前端 React 框架面试200题(一)

    2024-07-21 16:46:04       15 阅读
  7. Kali Linux渗透测试

    2024-07-21 16:46:04       18 阅读
  8. 【LeetCode 0338】【位运算/递归式】求比特位

    2024-07-21 16:46:04       15 阅读
  9. 使用scikit-learn进行机器学习:基础教程

    2024-07-21 16:46:04       19 阅读
  10. 机器学习 -逻辑回归的似然函数

    2024-07-21 16:46:04       14 阅读
  11. oracle 11G long类型如何转换 CLOB

    2024-07-21 16:46:04       16 阅读
  12. CentOS(7.x、8)上安装EMQX

    2024-07-21 16:46:04       17 阅读