XCTF:练习CTF解题XMAN比赛 8-8 login

来源:互联网 发布:弱视网络训练软件 编辑:程序博客网 时间:2024/05/23 19:15

 login

首先查看源码(看关键点):


因为是post方式那么我们就利用bp.

在登陆页面输入username=admin,,password=admin得到下面信息:



下面分析:

if ($result!=null&&$result->rowCount()==1)        {            echo $flag;        }
搜了一下PDO有一个函数PDOStatement::rowCount返回上一个SQL语句影响的行数。

returns the number of rows affected by the last DELETE, INSERT, or UPDATE statement executed by the corresponding PDOStatement object.


我们只需要控制 sql 语句让结果集不为空而且影响数为1 即可

payload 为 : username=admin'#&password=


%23对于是#表示注释作用

分析假设数据库里的句子:

$sql = “select user from flag where user=’\$_POST[‘user’]’ and password=’\$_POST[‘password’]’”;

所以user='admin' '#and password=''

#号后面已经注释不执行,不用考虑,admin后面多加一个单引号就是为了先实现引号的闭合,接着数据库中多一个引号(标识sql语句)所以继续执行下去,这样才能开始执行后面sql语句#注释。














参考

原创粉丝点击