CTF – sql注入(1)

题目地址:http://chinalover.sinaapp.com/web6/index.php

CTF – sql注入(1)

由图可知,此处给出了源码,源码如下:

CTF – sql注入(1)

分析源码:页面中输入的参数传到php中,if()对user和pass都进行了是否为空值的判断,若都不为空,则来连接数据库。然后再把页面中的user值赋值给 $user ,把页面中的pass值md5加密后赋值给 $pass ,最后拼接sql语句并执行。而要让flag成功输出的条件为:页面输入的pass经过md5加密后得到的值要和从数据库中查询到的user用户存储在数据库中经过md5加密后的值相同。

 

思路:构造能够返回将密码1 进行md5加密后的mysql语句,这样的话就能满足flag输出的条件,从而获得flag值。

 

准备:获得1经过md5加密后的值

C4CA4238A0B923820DCC509A6F75849B

 

 

 

构造payload:

Sql语句为  “select pw from ctf where user=‘$user ‘”  

页面输入的参数user 将拼接到 $user中

构造 ‘ union select ‘C4CA4238A0B923820DCC509A6F75849B‘ -- (空格)

拼接后为:

select pw from ctf where user=‘’union select ‘c4ca4238a0b923820dcc509a6f75849b‘ -- (空格),这里用’--+’用来注释行不通,用‘-- ‘却可以,问题在哪我也没想明白,先放着吧。

 

 

 

flag:

CTF – sql注入(1)

 

 

总结:

  1. ‘select 123acav ;’ 该语句执行时报错。
    CTF – sql注入(1)
     
     
  2. ‘select ‘123abc’; ‘执行成功。

    CTF – sql注入(1)

 

CTF – sql注入(1)

上一篇:SQL-mysql储存过程


下一篇:mysql按天,按周,按月,按季度,按年统计数据