zoukankan      html  css  js  c++  java
  • sqli-labs第十八题

    查看题目


    基于错误的请求头注入

    一个登录表单,显示了ip地址。
    测试一通毫无头绪。。。看看源码

    审计源码

    用户名和密码都做了输入检查

    if(isset($_POST['uname']) && isset($_POST['passwd']))
    
    	{
    	$uname = check_input($_POST['uname']);
    	$passwd = check_input($_POST['passwd']);
    

    提供正确的用户名和密码后,uagent,IP地址,用户名会被插入数据库中。

    $sql="SELECT  users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";
    	$result1 = mysql_query($sql);
    	$row1 = mysql_fetch_array($result1);
    		if($row1)
    			{
    			echo '<font color= "#FFFF00" font size = 3 >';
    			$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
    			mysql_query($insert);
    

    注入测试

    首先要获得一个用户名和密码
    试了半天,一个也不对,直接去查数据库

    使用BP抓包,方便修改请求头

    在user-agent参数后加一个单引号,然后放走数据包,可以看到页面报出一个错误

    源码也看到了,直接构造payload:',NULL,(select updatexml(1,concat(0x7c,user()),1)))#
    这里先使用单引号闭合第一个参数,然后提供空的第二个参数,在第三个参数构造一个updatexml的报错,最后闭合括号,注释掉剩下的语句。
    打卡BP,输入用户名,密码后提交。在BP中修改请求头的user-agent参数,然后关闭拦截。

    成功爆出数据库用户名

  • 相关阅读:
    拓展欧几里得
    使用BIOS进行键盘输入和磁盘读写
    直接定址表
    指令系统总结
    端口
    内中断
    标志寄存器
    call 和 ret 指令
    编写包含多个功能子程序的中断例程
    字符串的输入
  • 原文地址:https://www.cnblogs.com/a-qi/p/13543528.html
Copyright © 2011-2022 走看看