Less-1
从源码可以看出id为注入点,且为单引号过滤
使用 ' 闭合
--+为注释 原本应该用--‘space’,但-与‘连在一起无法起到注释作用
order by为联合查询——同时查询两张表,但两张表列数必须相同
所有从以上两张图可以看出此表格有三列数据
爆出显示位,可以看出显示位为2与3
及在2与3位填写我们需要查询的内容
填写database()即可得到数据库名称
?id=1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
group_concat是将查询到的结果连接起来,不然就这样一个数据
将table换成column以及table_schema='security'换成table_name='users'即可
可以看出users里面有username与password等列名
根据列名查询得到数据
Less-5
第五关没有提示信息
根据源码可以看出当我们输入正确与错误的id时他的显示页面是不同的,所以可以根据显示判断
此时我们可以选择盲注,length()判断数据库长度,ascii()和substr()联合使用,前者将后者截取的字母转化为asc码
由以上两张图可得数据库有8个字母组成
第一个字母为s,同理可得后面7个字母
Less-9
看源码可知无论id是否正确页面输出均为‘You are in...........’,所以第五关的方法就用不上了
此时我们可以用到一个新的方法
if(a,sleep(5),1)如果a结果是真的,那么执行sleep(5)页面延迟5秒,如果a的结果是假,执行1,页面不延迟。
1=1为真,所有页面加载5秒
得到数据库长度
然后后面步骤与第五关基本一致
Less-11
当我们输入1'时出现以下画面
判断是否存在sql注入
通过联合注入获取数据库信息,与第一关基本相同
Less-17
UPDATEXML(xml_target, xpath_expr, new_val)
其中,xml_target是要修改的XML类型的数据;xpath_expr是XPath表达式,用于指定要修改的节点位置;new_val指定新的节点值。
username有过滤,只能在password注入
注:有个问题,username必须正确才可以注入
输入:123' and (updatexml(1,concat(0x5c,database(),0x5c),1))#