2

CTF 题库记录

 1 year ago
source link: https://myonlycat.github.io/note/f45ebcce.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

CTF 题库记录

发表于 2018-07-28

| 分类于 CTF

| 0 Comments

字数统计: 959

|

阅读时长 ≈ 4

争取每日一更吧,题库来源实验吧

0X01 2018-7-28(MD5注入)

  • 这是个比较简单的一题

  • 老规矩先看页面源码吧
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body style="background-color: #999">
<div style="position:relative;margin:0 auto;width:300px;height:200px;padding-top:100px;font-size:20px;">
<form action="" method="post">
<table>
<tr>
请用管理员密码进行登录~~
</tr>
<tr>
<td>密码:</td><td><input type="text" name='password'></td>
</tr>
<tr>
<td><input type="submit" name='submit' style="margin-left:30px;"></td>
</tr>
</table>
</form>
密码错误! </div>
<!-- $password=$_POST['password'];
$sql = "SELECT * FROM admin WHERE username = 'admin' and password = '".md5($password,true)."'";
$result=mysqli_query($link,$sql);
if(mysqli_num_rows($result)>0){
echo 'flag is :'.$flag;
}
else{
echo '密码错误!';
} -->
</body>
</html>
  • 页面基于PHP,源码有句sql,如下:
SELECT * FROM admin WHERE username = 'admin' and password = '".md5($password,true)."'"

存在MD5的注入情况

  • MD5注入

先来说一下md5()这个函数
md5(string, raw) raw 可选,默认为false
true:返回16字符2进制格式
false:返回32字符16进制格式

简单来说就是 true将16进制的md5转化为字符了,如果某一字符串的md5恰好能够产生如’or ’之类的注入语句,就可以进行注入了.

我需要把sql查询变成什么样呢?加入我正常情况输入123sql会变成什么样呢?and password = 'MD5加密的数据",我这里进行注入的话最简单的需要查询admin表的所有用户,但是怎么查询呢?我需要or语句,我这里找了一篇资料来自More Smoked Leet Chicken,里面提供了一个string字符串ffifdyopmd5后 : 276f722736c95d99e921722cf9ed621c,转成字符串后 :'or'6<trash>

sql语句拼接为:
password = ‘XX’’or'6<trash>
6<trash> 在sql执行中把这节转从string转换为int到bool true

这样就完成了一个MD5的注入

2018-7-30 来自 CG-CTF 的签到题

2018-7-30 来自 CG-CTF 的MD5加密题

  • 看代码应该是用GET请求,输入一个a的值,被MD5加密过后等于QNKCDZO加密后的值,但是a不能为QNKCDZO

  • 第一次我想到是hash冲突,但是转过去一想hash冲突的可能太小了,最有可能的是PHP MD5函数的漏洞,一查果不其然,下面总结下:

    PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。


    有下面一些常见的payload:
    QNKCDZO
    0e830400451993494058024219903391


    s878926199a
    0e545993274517709034328855841020


    s155964671a
    0e342768416822451524974117254469


    s214587387a
    0e848240448830537924465865611904


    s214587387a
    0e848240448830537924465865611904


    s878926199a
    0e545993274517709034328855841020


    s1091221200a
    0e940624217856561557816327384675


    s1885207154a
    0e509367213418206700842008763514


    s1502113478a
    0e861580163291561247404381396064


    s1885207154a
    0e509367213418206700842008763514


    s1836677006a
    0e481036490867661113260034900752


    s155964671a
    0e342768416822451524974117254469


    s1184209335a
    0e072485820392773389523109082030


    s1665632922a
    0e731198061491163073197128363787


    s1502113478a
    0e861580163291561247404381396064


    s1836677006a
    0e481036490867661113260034900752


    s1091221200a
    0e940624217856561557816327384675


    s155964671a
    0e342768416822451524974117254469


    s1502113478a
    0e861580163291561247404381396064


    s155964671a
    0e342768416822451524974117254469


    s1665632922a
    0e731198061491163073197128363787


    s155964671a
    0e342768416822451524974117254469


    s1091221200a
    0e940624217856561557816327384675


    s1836677006a
    0e481036490867661113260034900752


    s1885207154a
    0e509367213418206700842008763514


    s532378020a
    0e220463095855511507588041205815


    s878926199a
    0e545993274517709034328855841020


    s1091221200a
    0e940624217856561557816327384675


    s214587387a
    0e848240448830537924465865611904


    s1502113478a
    0e861580163291561247404381396064


    s1091221200a
    0e940624217856561557816327384675


    s1665632922a
    0e731198061491163073197128363787


    s1885207154a
    0e509367213418206700842008763514


    s1836677006a
    0e481036490867661113260034900752


    s1665632922a
    0e731198061491163073197128363787


    s878926199a
    0e545993274517709034328855841020

  • 所以这道题:

2018-7-30 来自 CG-CTF 的签到题2

  • 下面是题目:

  • 尝试复制粘贴

  • 点击开门错了,想一下,密码又长又可以复制?不想让我对比? ok那我先把粘贴的密码展示出来

  • 有点小阴险啊 密码长度手动改成11,在输入个n

2018-7-30 来自 CG-CTF 题目”这不是web”

  • 下面是题目:
  • 下面是进去过后的样子

  • 一开始我找的源码没发现什么,在去找了找有没有目录遍历,也没有,后来我突发奇想GIF里面保存了信息?
    我把图片保存下来,百度了一下GIF怎么保存string,没资料,后来我想,直接保存为txt试试?就出现了下面的情况

    • OK了,题目蛮有意思的,哈哈哈

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK