web171: 从此题开始的150道题全部为sql注入,准备好了吗?
题解: 首先用 1' 去截断前面的单引号,接着加上or,接着我们后面的语句,因为这里是有三行数据,我们后面接的语句可以是1’ union select database(),user(),version()--+
可知,可查看到的数据库是ctfshow_web;
接下来,我们联合查询的突破口就是在ctfshow_web的数据库里,因此我们改变我们的playload;
1' UNION SELECT 1,table_name,3 from information_schema.tables where table_schema='ctfshow_web'--+
通过此语句解释就是在Information_schema.table里去查找数据库名为table_schema='ctfshow_web'的所有表名,即可查到,如下图:
拿到了数据库的表名,继续构造union语句,去拿列名了,如下图所示:
拿到列名,就看里面的值了,所以我们继续构造union联合查询语句。
最终,拿到flag。
web172: 撸猫为主,要什么flag?
此题,仍然是在源码里发现了有js/select.js文件,我们点击查看,发现文件查询的有:
因此,我们先用order by看看数据有多少列。
可以发现,此查询是有三列数据,因此我们可以用联合查询去查询数据库。
使用联合查询,发现其数据库名为“ctfshow_web”,因此我们就要去此数据库下查看有哪些表
发现表名有两个,因此我们知道表名,就去查询表名里的password的值,发现是在ctfshow_user2表里的password的值,藏有password。因此我们可以构造我们的playload:
/api/?id=1' union select 1,(select group_concat(password) from ctfshow_web.ctfshow_user2),database()%23
最终,即可拿到我们的flag。
web173: 考察SQL基础
与上题操作一样,就是反复练习SQL语句。
web174: 考察sql基础,不要一把梭,没意思